changeset 12497:93a849230c1c v8.0.1128

patch 8.0.1128: old xterm sends CTRL-X in response to t_RS commit https://github.com/vim/vim/commit/e22bbf65088a01b465918919782c19eb291f9cf0 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Sep 19 20:47:16 2017 +0200 patch 8.0.1128: old xterm sends CTRL-X in response to t_RS Problem: Old xterm sends CTRL-X in response to t_RS. Solution: Only send t_RS for xterm 279 and later. Remove the workaround to ignore CTRL-X.
author Christian Brabandt <cb@256bit.org>
date Tue, 19 Sep 2017 21:00:04 +0200
parents 93c55991726c
children bf98d339b568
files src/term.c src/version.c
diffstat 2 files changed, 10 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/src/term.c
+++ b/src/term.c
@@ -4580,9 +4580,12 @@ check_termcode(
 			    is_not_xterm = TRUE;
 
 			/* Only request the cursor style if t_SH and t_RS are
-			 * set. Not for Terminal.app, it can't handle t_RS, it
+			 * set. Only supported properly by xterm since version
+			 * 279 (otherwise it returns 0x18).
+			 * Not for Terminal.app, it can't handle t_RS, it
 			 * echoes the characters to the screen. */
 			if (rcs_status == STATUS_GET
+				&& version >= 279
 				&& !is_not_xterm
 				&& *T_CSH != NUL
 				&& *T_CRS != NUL)
@@ -4729,11 +4732,6 @@ check_termcode(
 			key_name[0] = (int)KS_EXTRA;
 			key_name[1] = (int)KE_IGNORE;
 			slen = i + 1 + (tp[i] == ESC);
-			if (rcs_status == STATUS_SENT
-					     && slen < len && tp[slen] == 0x18)
-			    /* Some older xterm send 0x18 for the T_RS request,
-			     * skip it here. */
-			    ++slen;
 # ifdef FEAT_EVAL
 			set_vim_var_string(VV_TERMRGBRESP, tp, slen);
 # endif
@@ -4782,11 +4780,6 @@ check_termcode(
 			key_name[0] = (int)KS_EXTRA;
 			key_name[1] = (int)KE_IGNORE;
 			slen = i + 1 + (tp[i] == ESC);
-			if (rcs_status == STATUS_SENT
-					     && slen < len && tp[slen] == 0x18)
-			    /* Some older xterm send 0x18 for the T_RS request,
-			     * skip it here. */
-			    ++slen;
 			break;
 		    }
 		  }
@@ -5470,19 +5463,19 @@ check_termcode(
 			/*
 			 * Avoid computing the difference between mouse_time
 			 * and orig_mouse_time for the first click, as the
-			 * difference would be huge and would cause multiplication
-			 * overflow.
+			 * difference would be huge and would cause
+			 * multiplication overflow.
 			 */
 			timediff = p_mouset;
 		    }
 		    else
 		    {
 			timediff = (mouse_time.tv_usec
-						- orig_mouse_time.tv_usec) / 1000;
+					     - orig_mouse_time.tv_usec) / 1000;
 			if (timediff < 0)
 			    --orig_mouse_time.tv_sec;
 			timediff += (mouse_time.tv_sec
-						 - orig_mouse_time.tv_sec) * 1000;
+					      - orig_mouse_time.tv_sec) * 1000;
 		    }
 		    orig_mouse_time = mouse_time;
 		    if (mouse_code == orig_mouse_code
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1128,
+/**/
     1127,
 /**/
     1126,