]> granicus.if.org Git - vim/commitdiff
patch 8.0.1033: detecting background color does not work in screen v8.0.1033
authorBram Moolenaar <Bram@vim.org>
Fri, 1 Sep 2017 18:24:03 +0000 (20:24 +0200)
committerBram Moolenaar <Bram@vim.org>
Fri, 1 Sep 2017 18:24:03 +0000 (20:24 +0200)
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.

src/os_unix.c
src/term.c
src/version.c

index f77debc8a36361ddb36970ee9b2688dcd9bf00bd..b34c31645bb06718ea8327743fb22e0ab4085050 100644 (file)
@@ -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);
 }
 
index 85292db8572dfc4711a190280c8fe89cc571446a..7460be9772756ff41cd8210cfab7b3952ac83e3e 100644 (file)
@@ -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;
 
index beb8ee720389ea8573ddf947170c7e7ca3734cc6..807b2f1ab9e6b0cc1a0b70e1838f513d414e868d 100644 (file)
@@ -769,6 +769,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1033,
 /**/
     1032,
 /**/