updated for version 7.4.305
Problem: Making 'ttymouse' empty after the xterm version was requested
causes problems. (Elijah Griffin)
Solution: Do not check for DEC mouse sequences when the xterm version was
requested. Also don't request the xterm version when DEC mouse
was enabled.
diff --git a/src/os_unix.c b/src/os_unix.c
index 65ce685..78e9914 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -3667,6 +3667,8 @@
void
check_mouse_termcode()
{
+ xterm_conflict_mouse = FALSE;
+
# ifdef FEAT_MOUSE_XTERM
if (use_xterm_mouse()
# ifdef FEAT_MOUSE_URXVT
@@ -3711,7 +3713,7 @@
# endif
# ifdef FEAT_MOUSE_JSB
- /* conflicts with xterm mouse: "\033[" and "\033[M" ??? */
+ /* There is no conflict, but it was disabled for xterm before. */
if (!use_xterm_mouse()
# ifdef FEAT_GUI
&& !gui.in_use
@@ -3738,32 +3740,40 @@
# endif
# ifdef FEAT_MOUSE_DEC
- /* conflicts with xterm mouse: "\033[" and "\033[M" */
- if (!use_xterm_mouse()
+ /* Conflicts with xterm mouse: "\033[" and "\033[M".
+ * Also conflicts with the xterm termresponse, skip this if it was
+ * requested already. */
+ if (!use_xterm_mouse() && !did_request_esc_sequence()
# ifdef FEAT_GUI
&& !gui.in_use
# endif
)
+ {
set_mouse_termcode(KS_DEC_MOUSE, (char_u *)(term_is_8bit(T_NAME)
? IF_EB("\233", CSI_STR) : IF_EB("\033[", ESC_STR "[")));
+ xterm_conflict_mouse = TRUE;
+ }
else
del_mouse_termcode(KS_DEC_MOUSE);
# endif
# ifdef FEAT_MOUSE_PTERM
/* same as the dec mouse */
- if (!use_xterm_mouse()
+ if (!use_xterm_mouse() && !did_request_esc_sequence()
# ifdef FEAT_GUI
&& !gui.in_use
# endif
)
+ {
set_mouse_termcode(KS_PTERM_MOUSE,
(char_u *) IF_EB("\033[", ESC_STR "["));
+ xterm_conflict_mouse = TRUE;
+ }
else
del_mouse_termcode(KS_PTERM_MOUSE);
# endif
# ifdef FEAT_MOUSE_URXVT
/* same as the dec mouse */
- if (use_xterm_mouse() == 3
+ if (use_xterm_mouse() == 3 && !did_request_esc_sequence()
# ifdef FEAT_GUI
&& !gui.in_use
# endif
@@ -3778,6 +3788,7 @@
mch_setmouse(FALSE);
setmouse();
}
+ xterm_conflict_mouse = TRUE;
}
else
del_mouse_termcode(KS_URXVT_MOUSE);