[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#24420: 25.1.50; Work around terminal differences for bracketed-paste
From: |
Robert Cochran |
Subject: |
bug#24420: 25.1.50; Work around terminal differences for bracketed-paste/mouse-2 |
Date: |
Wed, 14 Sep 2016 11:36:57 -0700 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) |
Philipp Stephani <p.stephani2@gmail.com> writes:
> There are several terminals that announce themselves as XTerm and
> partially implement the XTerm control sequences
> (http://invisible-island.net/xterm/ctlseqs/ctlseqs.html), but have some
> slightly different behavior.
That sounds like breakage waiting to happen. Maybe I'm not entirely
familiar with how things are done in terminal-emulator-land, but why
would you declare yourself as an XTerm if you only partially implement
or differ from the real thing? _That_ sounds like the bug to me. Don't
claim to be something you're not. When a program *still* has to account
for differences in terminals after getting a terminal descriptor, then
IMO you've lost the whole point of term{cap,info}.
How does one get new entries into the database (and curses) nowadays
anyhow? Maybe part of the problem here is that people piggy-back off of
xterm's descriptor because they don't have their own entry... Also, how
do you communicate the advanced features (like mouse support)? Is it
simply that it's there if a terminal claims to be an xterm? Or is there
a real query method for those things?
> I've tried out XTerm, HTerm, and gnome-terminal, and found the
> following behavior differences:
>
> - XTerm sends xterm-paste (ESC [ 200~ ... ESC [ 201~) if
> xterm-mouse-mode is disabled. If xterm-mouse-mode is enabled, it
> sends down-mouse-2 + up-mouse-2 using SGR coordinates (ESC [<1;x;yM
> ESC [<1;x;ym), which gets translated to mouse-yank-primary.
>
> - Gnome Terminal sends xterm-paste if xterm-mouse-mode is disabled. If
> xterm-mouse-mode is enabled, it only sends down-mouse-2 using SGR
> coordinates, which is ignored by Emacs.
>
> - HTerm doesn't use bracketed paste mode if xterm-mouse-mode is disabled
> (i.e. pasted text gets inserted using individual
> self-insert-commands). If xterm-mouse-mode is enabled, it uses both
> (!) down-mouse-2 + down-mouse-up (using basic coordinates) and then a
> bracketed paste.
>
> The HTerm and Gnome-Terminal behaviors are probably bugs, and I'll try
> to get them fixed. However, maybe we want to work around these issues
> on the Emacs side, e.g. by not requiring an up-mouse-2 if
> xterm-mouse-mode is enabled.
I could go either way on this one... Emacs maybe ought not to be so
choosy about what it gets from a control character standpoint, but how
relatively difficuly would it be to fix the emulators to do both up and
down? That way both flavors of program are satisfied: the ones looking
for down-only get their event, and those looking for both get both.
--
~Robert Cochran
GPG Fingerprint - E778 2DD4 FEA6 6A68 6F26 AD2D E5C3 EB36 4886 8871