diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-09-01 20:24:03 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-09-01 20:24:03 +0200 |
commit | 995e4afcfe60aa3c214ba680e7b027a4e05cf62b (patch) | |
tree | 2c60af259b0cf2204ce101833efa56d48a3e58a4 | |
parent | 9ac9dfa9e2b20659e5806982f027fa4fd637c3c7 (diff) | |
download | vim-995e4afcfe60aa3c214ba680e7b027a4e05cf62b.zip |
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.
-rw-r--r-- | src/os_unix.c | 1 | ||||
-rw-r--r-- | src/term.c | 24 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 17 insertions, 10 deletions
diff --git a/src/os_unix.c b/src/os_unix.c index f77debc8a..b34c31645 100644 --- 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 index 85292db85..7460be977 100644 --- 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 index beb8ee720..807b2f1ab 100644 --- 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, |