# HG changeset patch # User Christian Brabandt # Date 1504290604 -7200 # Node ID 50b0b3aaa5451d9fc1304c5f84f49402466443b5 # Parent 1db1b371b9a3ecb575f9691122af9cd8c599772b patch 8.0.1033: detecting background color does not work in screen commit https://github.com/vim/vim/commit/995e4afcfe60aa3c214ba680e7b027a4e05cf62b Author: Bram Moolenaar 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. diff --git a/src/os_unix.c b/src/os_unix.c --- 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); } diff --git a/src/term.c b/src/term.c --- 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; diff --git a/src/version.c b/src/version.c --- 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,