On Sun, Jan 22, 2012 at 15:59, Thomas Dickey <dickey@his.com> wrote:
Of course one has to check the final character :) And if I was to implement an application from scratch, I'd say that the standard is great, I'd implement a framework for collecting numeric parameters up to the final letter and then parse the whole stuff, it's easy.
Now, however, support should be patched into many already existing applications whose code I don't understand, don't maintain, and are not built along these lines. I'd like to patch quite a few of them, without spending too much time. Substantially rewriting them by me or anyone contributing a patch is not really feasible.
Please take a very quick look at emacs-23-3b. lisp/xt-mouse.el L246 registers the xterm-mouse-translate lisp-method to be called on \e[M. This, in turn, calls xterm-mouse-event-read three times to read the arguments, and then processes them. The input_decode_map is apparently looked up in src/term.c, although I don't understand that code yet. If there's a new unique prefix then that can be registered in the lisp file too, and the whole business of mouse coordinate parsing solved locally in lisp, which I guess even I would be able to do despite knowing nothing about lisp. If there's no unique prefix, i.e. if \e[< can mean mouse coordinate but can mean something else as well, then adding support would require much more complex architecture changes from someone who much more deeply understands emacs' structure.
I'm not asking you to come up with a patch to emacs or anything like that, but please take a very quick look at the source and estimate how much work it'd be to add support in one case or in the other. I hope you'll agree that it's much more work to add proper support if there is no unique prefix.
I personally think it's important that extended mouse support should be easy to add into applications, and should not require architecture redesign. I think it's a key to getting the feature deployed quickly and widely across apps.
thanks,
egmont
The reader is still going to do a check at the end, and discard unexpected
input as an error. If the inputs follow the same syntax rules, then it's
less problem to implement and maintain.
I'm not expecting someone to just match "\e[<" and blindly sscanf looking
for a given number of integer parameters and then skip the next character
without examining it. 1006 uses the final character to distinguish
button press/release.
Of course one has to check the final character :) And if I was to implement an application from scratch, I'd say that the standard is great, I'd implement a framework for collecting numeric parameters up to the final letter and then parse the whole stuff, it's easy.
Now, however, support should be patched into many already existing applications whose code I don't understand, don't maintain, and are not built along these lines. I'd like to patch quite a few of them, without spending too much time. Substantially rewriting them by me or anyone contributing a patch is not really feasible.
Please take a very quick look at emacs-23-3b. lisp/xt-mouse.el L246 registers the xterm-mouse-translate lisp-method to be called on \e[M. This, in turn, calls xterm-mouse-event-read three times to read the arguments, and then processes them. The input_decode_map is apparently looked up in src/term.c, although I don't understand that code yet. If there's a new unique prefix then that can be registered in the lisp file too, and the whole business of mouse coordinate parsing solved locally in lisp, which I guess even I would be able to do despite knowing nothing about lisp. If there's no unique prefix, i.e. if \e[< can mean mouse coordinate but can mean something else as well, then adding support would require much more complex architecture changes from someone who much more deeply understands emacs' structure.
I'm not asking you to come up with a patch to emacs or anything like that, but please take a very quick look at the source and estimate how much work it'd be to add support in one case or in the other. I hope you'll agree that it's much more work to add proper support if there is no unique prefix.
I personally think it's important that extended mouse support should be easy to add into applications, and should not require architecture redesign. I think it's a key to getting the feature deployed quickly and widely across apps.
thanks,
egmont
(Correctly parsing 1015 also would involve checking the final character,
of course).
"private" in this regard means that it's not part of ECMA-48.
> I think anything as simple as a fixed letter following the '<' sign, if
> it's not used anywhere else right now, would do it. Or alternatively \e[M
> followed by a single fixed letter that is currently out of use would also
> do it.
>
> Also, I'm not sure about the purpose of "private" mode, but shouldn't we
> aim to provide something that will quickly become a new standard, not
> something "private"?
Take a look at the various "CSI ?" and "CSI >" listed in ctlseqs to see
how xterm (and DEC) use private modes. The existing mouse controls are
for instance private modes.
CSI ? 1 0 0 1 h
Ps = 1 0 0 1 -> Use Hilite Mouse Tracking.
> > The first three are used in various ways in different terminals. The last
> > seems to be rarely used, so I chose to use that.
> >
> > Conceivably some other escape sequence could be implemented (I don't have
> > any plans for that). I'm assuming that vim will check the final character.
> >
>
>
> Thanks a lot,
> egmont
>
>
>
>
>
> >
> > > Once this is done, it'll be okay to add 1006 support to Vim. (In the
> > mean
> > > time I guess 1015 support could be dropped; this would make extended
> > mouse
> > > coords stop working in some versions of some terminals, but would
> > probably
> > > also simplify Vim's code. But it's okay to keep 1015 too.)
> > >
> > > thanks,
> > > egmont
> > >
> > >
> > >
> > > >
> > > > Note that in ctlseqs.html in the DECSET list 1006 and 1015 are not
> > > > documented.
> > > >
> > > > --
> > > > CRONE: Who sent you?
> > > > ARTHUR: The Knights Who Say GNU!
> > > > CRONE: Aaaagh! (she looks around in rear) No! We have no licenses
> > here.
> > > > "Monty Python and the Holy editor wars" PYTHON (MONTY)
> > SOFTWARE
> > > > LTD
> > > >
> > > > /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net
> > > > \\\
> > > > /// sponsor Vim, vote for features --
> > http://www.Vim.org/sponsor/\\\
> > > > \\\ an exciting new programming language -- http://www.Zimbu.org
> > > > ///
> > > > \\\ help me help AIDS victims -- http://ICCF-Holland.org
> > > > ///
> > > >
> > > > --
> > > > You received this message from the "vim_use" maillist.
> > > > Do not top-post! Type your reply below the text you are replying to.
> > > > For more information, visit http://www.vim.org/maillist.php
> > > >
> >
> > --
> > Thomas E. Dickey <dickey@invisible-island.net>
> > http://invisible-island.net
> > ftp://invisible-island.net
> >
> > -----BEGIN PGP SIGNATURE-----
> > Version: GnuPG v1.4.9 (GNU/Linux)
> >
> > iEYEARECAAYFAk8cG2IACgkQcCNT4PfkjtucogCfdZesPECwenLZNHe6xx/oc5s7
> > tiMAn2n1zVIgYEMMoZyl/RUwWkVJ1gtZ
> > =DJIQ
> > -----END PGP SIGNATURE-----
> >
> >
--
Thomas E. Dickey <dickey@invisible-island.net>
http://invisible-island.net
ftp://invisible-island.net
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEARECAAYFAk8cJDoACgkQcCNT4PfkjttF+ACeP3kEskL7sUExPndJIKSfgIBs
n0gAoJ7VGKBTLJJjIdn40t3hTNw6qeSC
=JCNQ
-----END PGP SIGNATURE-----
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
No comments:
Post a Comment