I wrote:
> Therefore, there would seem to be no harm whatsoever in detecting screen
> as an xterm-mouse-code-capable terminal, and sending the mouse-mode
> sequence ("xterm" protocol, since AFAIK screen provides no way to detect
> the underlying xterm version). If the underlying terminal claims to be
> xterm or rxvt, then the user will automatically get the benefit of mouse
> support without trouble; otherwise, screen will simply ignore the
> sequence and no harm is done to other terminals (such as unrecognized
> sequence-emitters, or DEC-mouse-only terminals).Attached is a proposed patch that effects the change I'm requesting. I would love to get some feedback/further discussion based on it. They say "code talks", and so here is my concrete expression. :) -- Micah J. Cowan Programmer, musician, typesetting enthusiast, gamer... http://micah.cowan.name/
Index: os_unix.c
===================================================================
--- os_unix.c (revision 276)
+++ os_unix.c (working copy)
@@ -2034,6 +2034,21 @@
|| STRCMP(name, "builtin_xterm") == 0);
}
+/*
+ * Return TRUE if "name" appears to be that of a terminal
+ * known to support the xterm-style mouse protocol.
+ * Relies on term_is_xterm having been set to its correct value.
+ */
+ int
+vim_uses_xterm_mouse(name)
+ char_u *name;
+{
+ if (name == NULL)
+ return FALSE;
+ return (STRNICMP(name, "screen", 6) == 0
+ || term_is_xterm);
+}
+
#if defined(FEAT_MOUSE_TTY) || defined(PROTO)
/*
* Return non-zero when using an xterm mouse, according to 'ttymouse'.
Index: term.c
===================================================================
--- term.c (revision 276)
+++ term.c (working copy)
@@ -1601,6 +1601,9 @@
int try;
int termcap_cleared = FALSE;
#endif
+#if defined(UNIX) || defined(VMS)
+ int term_uses_xterm_mouse;
+#endif
int width = 0, height = 0;
char_u *error_msg = NULL;
char_u *bs_p, *del_p;
@@ -1903,6 +1906,7 @@
#if defined(UNIX) || defined(VMS)
term_is_xterm = vim_is_xterm(term);
+ term_uses_xterm_mouse = vim_uses_xterm_mouse(term);
#endif
#ifdef FEAT_MOUSE
@@ -1923,7 +1927,7 @@
# endif
clip_init(FALSE);
# endif
- if (term_is_xterm)
+ if (term_uses_xterm_mouse)
{
if (use_xterm_mouse())
p = NULL; /* keep existing value, might be "xterm2" */
signature.asc
Description: OpenPGP digital signature
