From: Philipp Stephani <p.stephani2@gmail.com>
To: 23009@debbugs.gnu.org
Subject: bug#23009: 25.0.92; xterm-mouse-mode should not assume UTF-8 coordinates
Date: Mon, 14 Mar 2016 13:56:41 +0100 [thread overview]
Message-ID: <wvr460wp43qu.fsf@phst2.muc.corp.google.com> (raw)
`xterm-mouse-mode' sends \e[?1005h to enable UTF-8 mouse coordinates,
but it never checks that the terminal actually supports that. Then
`xterm-mouse--read-utf8-char' reads an UTF-8 sequence without checking
that the terminal actually sent one. On terminals that don't support
UTF-8 coordinates (such as Chromium's hterm) this leads to garbage if
any mouse coordinate is larger than 127. For example, when clicking in
the right part of the terminal in hterm, the menu opens and the
following is shown in lossage:
ESC [ M SPC \237 F ESC [ M # \237 F [tmm-menubar-mouse]
Instead, this should have been interpreted as two events with
single-byte mouse coordinates.
I'd suggest the following (and will happily provide patches if
accepted):
- Don't enable UTF-8 coordinates at all. It is too hard to figure out
whether they are enabled. Rather, err on the safe side and only use
single-byte coordinates. (The superior SGR mode, which doesn't suffer
from this problem, should remain enabled.)
- In `xterm-mouse--read-number-from-terminal', specify a very short
timeout. The terminal will always write the entire escape sequence as
a unit, so waiting only increases the chance to accidentially read
unrelated events.
- As an optimization, provide a `read-byte' function written in C that
reads a single byte without taking the current terminal encoding into
account.
In GNU Emacs 25.0.92.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.10.8)
of 2016-03-14 built on REDACTED
Repository revision: 80ec484ac83e6965a843dabf766ade057ee1bc6a
Windowing system distributor 'The X.Org Foundation', version 11.0.11501000
System Description: Ubuntu 14.04 LTS
Configured features:
XPM JPEG TIFF GIF PNG RSVG SOUND GPM DBUS GCONF GSETTINGS NOTIFY ACL
LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11
Important settings:
value of $LANG: en_US.UTF-8
locale-coding-system: utf-8-unix
Major mode: Lisp Interaction
Minor modes in effect:
tooltip-mode: t
global-eldoc-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tool-bar-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
line-number-mode: t
transient-mark-mode: t
Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Load-path shadows:
None found.
Features:
(shadow sort mail-extr emacsbug message dired format-spec rfc822 mml
mml-sec epg epg-config gnus-util mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
rfc2045 ietf-drums mm-util help-fns help-mode easymenu cl-loaddefs pcase
cl-lib mail-prsvr mail-utils time-date mule-util tooltip eldoc electric
uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list newcomment elisp-mode lisp-mode prog-mode register page
menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core frame cl-generic cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese charscript case-table epa-hook jka-cmpr-hook help
simple abbrev minibuffer cl-preloaded nadvice loaddefs button faces
cus-face macroexp files text-properties overlay sha1 md5 base64 format
env code-pages mule custom widget hashtable-print-readable backquote
dbusbind inotify dynamic-setting system-font-setting font-render-setting
move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)
Memory information:
((conses 16 88738 7446)
(symbols 48 19932 0)
(miscs 40 463 186)
(strings 32 14918 4643)
(string-bytes 1 445677)
(vectors 16 12226)
(vector-slots 8 442799 4664)
(floats 8 164 18)
(intervals 56 206 0)
(buffers 976 12)
(heap 1024 30327 1014))
--
Google Germany GmbH
Erika-Mann-Straße 33
80636 München
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschäftsführer: Matthew Scott Sucherman, Paul Terence Manicle
Diese E-Mail ist vertraulich. Wenn Sie nicht der richtige Adressat sind,
leiten Sie diese bitte nicht weiter, informieren Sie den Absender und löschen
Sie die E-Mail und alle Anhänge. Vielen Dank.
This e-mail is confidential. If you are not the right addressee please do not
forward it, please inform the sender, and please erase this e-mail including
any attachments. Thanks.
next reply other threads:[~2016-03-14 12:56 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-14 12:56 Philipp Stephani [this message]
2016-03-14 16:43 ` bug#23009: 25.0.92; xterm-mouse-mode should not assume UTF-8 coordinates Eli Zaretskii
2016-03-14 17:24 ` Philipp Stephani
2016-03-14 23:03 ` Philipp Stephani
2016-03-15 17:57 ` Eli Zaretskii
2016-03-19 17:15 ` Philipp Stephani
2016-03-19 17:16 ` Philipp Stephani
2016-03-25 10:18 ` Eli Zaretskii
2016-03-26 17:31 ` Philipp Stephani
2016-03-26 18:07 ` Eli Zaretskii
2016-03-26 22:26 ` Philipp Stephani
2016-03-27 15:21 ` Eli Zaretskii
2016-04-02 9:43 ` Eli Zaretskii
2016-04-02 19:10 ` Philipp Stephani
2016-04-02 19:53 ` Eli Zaretskii
2016-04-08 8:24 ` Eli Zaretskii
2016-04-16 9:57 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=wvr460wp43qu.fsf@phst2.muc.corp.google.com \
--to=p.stephani2@gmail.com \
--cc=23009@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).