changeset 12307:50b0b3aaa545 v8.0.1033

patch 8.0.1033: detecting background color does not work in screen commit https://github.com/vim/vim/commit/995e4afcfe60aa3c214ba680e7b027a4e05cf62b Author: Bram Moolenaar <Bram@vim.org> Date: Fri Sep 1 20:24:03 2017 +0200 patch 8.0.1033: detecting background color does not work in screen Problem: Detecting background color does not work in screen, even when it is working like an xterm. Solution: Make "screen.xterm" use termcap entries like an xterm. (Lubomir Rintel, closes #2048) When termresponse version is huge also recognize as not being an xterm.
author Christian Brabandt <cb@256bit.org>
date Fri, 01 Sep 2017 20:30:04 +0200
parents 1db1b371b9a3
children 30acf035d5c2
files src/os_unix.c src/term.c src/version.c
diffstat 3 files changed, 17 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -2280,6 +2280,7 @@ vim_is_xterm(char_u *name)
 		|| STRNICMP(name, "kterm", 5) == 0
 		|| STRNICMP(name, "mlterm", 6) == 0
 		|| STRNICMP(name, "rxvt", 4) == 0
+		|| STRNICMP(name, "screen.xterm", 12) == 0
 		|| STRCMP(name, "builtin_xterm") == 0);
 }
 
--- a/src/term.c
+++ b/src/term.c
@@ -4496,6 +4496,8 @@ check_termcode(
 		/* eat it when at least one digit and ending in 'c' */
 		if (*T_CRV != NUL && i > 2 + (tp[0] != CSI) && tp[i] == 'c')
 		{
+		    int version = col;
+
 		    LOG_TR("Received CRV response");
 		    crv_status = STATUS_GOT;
 # ifdef FEAT_AUTOCMD
@@ -4508,10 +4510,11 @@ check_termcode(
 			switch_to_8bit();
 
 		    /* rxvt sends its version number: "20703" is 2.7.3.
+		     * Screen sends 40500.
 		     * Ignore it for when the user has set 'term' to xterm,
 		     * even though it's an rxvt. */
-		    if (col > 20000)
-			col = 0;
+		    if (version > 20000)
+			version = 0;
 
 		    if (tp[1 + (tp[0] != CSI)] == '>' && semicols == 2)
 		    {
@@ -4522,19 +4525,19 @@ check_termcode(
 			if (!option_was_set((char_u *)"ttym"))
 			{
 # ifdef TTYM_SGR
-			    if (col >= 277)
+			    if (version >= 277)
 				set_option_value((char_u *)"ttym", 0L,
 							  (char_u *)"sgr", 0);
 			    else
 # endif
 			    /* if xterm version >= 95 use mouse dragging */
-			    if (col >= 95)
+			    if (version >= 95)
 				set_option_value((char_u *)"ttym", 0L,
 						       (char_u *)"xterm2", 0);
 			}
 
 			/* if xterm version >= 141 try to get termcap codes */
-			if (col >= 141)
+			if (version >= 141)
 			{
 			    LOG_TR("Enable checking for XT codes");
 			    check_for_codes = TRUE;
@@ -4543,7 +4546,7 @@ check_termcode(
 			}
 
 			/* libvterm sends 0;100;0 */
-			if (col == 100
+			if (version == 100
 				&& STRNCMP(tp + extra - 2, "0;100;0c", 8) == 0)
 			{
 			    /* If run from Vim $COLORS is set to the number of
@@ -4558,24 +4561,25 @@ check_termcode(
 			 * compatible. */
 #  ifdef MACOS
 			/* Mac Terminal.app sends 1;95;0 */
-			if (col == 95
+			if (version == 95
 				&& STRNCMP(tp + extra - 2, "1;95;0c", 7) == 0)
 			    is_not_xterm = TRUE;
 #  endif
 			/* Gnome terminal sends 1;3801;0 or 1;4402;0.
 			 * xfce4-terminal sends 1;2802;0.
+			 * screen sends 83;40500;0
 			 * Assuming any version number over 2800 is not an
-			 * xterm. */
+			 * xterm (without the limit for rxvt and screen). */
 			if (col >= 2800)
 			    is_not_xterm = TRUE;
 
 			/* PuTTY sends 0;136;0 */
-			if (col == 136
+			if (version == 136
 				&& STRNCMP(tp + extra - 2, "0;136;0c", 8) == 0)
 			    is_not_xterm = TRUE;
 
 			/* Konsole sends 0;115;0 */
-			if (col == 115
+			if (version == 115
 				&& STRNCMP(tp + extra - 2, "0;115;0c", 8) == 0)
 			    is_not_xterm = TRUE;
 
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1033,
+/**/
     1032,
 /**/
     1031,