forked from aniani/vim
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.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
24
src/term.c
24
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;
|
||||
|
||||
|
@@ -769,6 +769,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1033,
|
||||
/**/
|
||||
1032,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user