summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-09-01 20:24:03 +0200
committerBram Moolenaar <Bram@vim.org>2017-09-01 20:24:03 +0200
commit995e4afcfe60aa3c214ba680e7b027a4e05cf62b (patch)
tree2c60af259b0cf2204ce101833efa56d48a3e58a4
parent9ac9dfa9e2b20659e5806982f027fa4fd637c3c7 (diff)
downloadvim-git-995e4afcfe60aa3c214ba680e7b027a4e05cf62b.tar.gz
patch 8.0.1033: detecting background color does not work in screenv8.0.1033
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.c1
-rw-r--r--src/term.c24
-rw-r--r--src/version.c2
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,