mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
updated for version 7.4.627
Problem: The last screen cell is not updated. Solution: Respect the "tn" termcap feature. (Hayaki Saito)
This commit is contained in:
@@ -224,10 +224,11 @@ The options are listed below. The associated termcap code is always equal to
|
|||||||
the last two characters of the option name. Only one termcap code is
|
the last two characters of the option name. Only one termcap code is
|
||||||
required: Cursor motion, 't_cm'.
|
required: Cursor motion, 't_cm'.
|
||||||
|
|
||||||
The options 't_da', 't_db', 't_ms', 't_xs' represent flags in the termcap.
|
The options 't_da', 't_db', 't_ms', 't_xs', 't_xn' represent flags in the
|
||||||
When the termcap flag is present, the option will be set to "y". But any
|
termcap. When the termcap flag is present, the option will be set to "y".
|
||||||
non-empty string means that the flag is set. An empty string means that the
|
But any non-empty string means that the flag is set. An empty string means
|
||||||
flag is not set. 't_CS' works like this too, but it isn't a termcap flag.
|
that the flag is not set. 't_CS' works like this too, but it isn't a termcap
|
||||||
|
flag.
|
||||||
|
|
||||||
OUTPUT CODES
|
OUTPUT CODES
|
||||||
option meaning ~
|
option meaning ~
|
||||||
@@ -281,6 +282,9 @@ OUTPUT CODES
|
|||||||
t_vs cursor very visible *t_vs* *'t_vs'*
|
t_vs cursor very visible *t_vs* *'t_vs'*
|
||||||
*t_xs* *'t_xs'*
|
*t_xs* *'t_xs'*
|
||||||
t_xs if non-empty, standout not erased by overwriting (hpterm)
|
t_xs if non-empty, standout not erased by overwriting (hpterm)
|
||||||
|
*t_xn* *'t_xn'*
|
||||||
|
t_xn if non-empty, character writing at the last cell of screen
|
||||||
|
didn't causes scrolling
|
||||||
t_ZH italics mode *t_ZH* *'t_ZH'*
|
t_ZH italics mode *t_ZH* *'t_ZH'*
|
||||||
t_ZR italics end *t_ZR* *'t_ZR'*
|
t_ZR italics end *t_ZR* *'t_ZR'*
|
||||||
|
|
||||||
|
@@ -2978,6 +2978,7 @@ static struct vimoption
|
|||||||
p_term("t_WS", T_CWS)
|
p_term("t_WS", T_CWS)
|
||||||
p_term("t_SI", T_CSI)
|
p_term("t_SI", T_CSI)
|
||||||
p_term("t_EI", T_CEI)
|
p_term("t_EI", T_CEI)
|
||||||
|
p_term("t_xn", T_XN)
|
||||||
p_term("t_xs", T_XS)
|
p_term("t_xs", T_XS)
|
||||||
p_term("t_ZH", T_CZH)
|
p_term("t_ZH", T_CZH)
|
||||||
p_term("t_ZR", T_CZR)
|
p_term("t_ZR", T_CZR)
|
||||||
|
@@ -7968,9 +7968,11 @@ screen_char(off, row, col)
|
|||||||
if (row >= screen_Rows || col >= screen_Columns)
|
if (row >= screen_Rows || col >= screen_Columns)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Outputting the last character on the screen may scrollup the screen.
|
/* Outputting a character in the last cell on the screen may scroll the
|
||||||
* Don't to it! Mark the character invalid (update it when scrolled up) */
|
* screen up. Only do it when the "xn" termcap property is set, otherwise
|
||||||
if (row == screen_Rows - 1 && col == screen_Columns - 1
|
* mark the character invalid (update it when scrolled up). */
|
||||||
|
if (*T_XN == NUL
|
||||||
|
&& row == screen_Rows - 1 && col == screen_Columns - 1
|
||||||
#ifdef FEAT_RIGHTLEFT
|
#ifdef FEAT_RIGHTLEFT
|
||||||
/* account for first command-line character in rightleft mode */
|
/* account for first command-line character in rightleft mode */
|
||||||
&& !cmdmsg_rl
|
&& !cmdmsg_rl
|
||||||
|
@@ -200,6 +200,7 @@ static struct builtin_term builtin_termcaps[] =
|
|||||||
{(int)KS_VB, IF_EB("\033|f", ESC_STR "|f")},
|
{(int)KS_VB, IF_EB("\033|f", ESC_STR "|f")},
|
||||||
{(int)KS_MS, "y"},
|
{(int)KS_MS, "y"},
|
||||||
{(int)KS_UT, "y"},
|
{(int)KS_UT, "y"},
|
||||||
|
{(int)KS_XN, "y"},
|
||||||
{(int)KS_LE, "\b"}, /* cursor-left = BS */
|
{(int)KS_LE, "\b"}, /* cursor-left = BS */
|
||||||
{(int)KS_ND, "\014"}, /* cursor-right = CTRL-L */
|
{(int)KS_ND, "\014"}, /* cursor-right = CTRL-L */
|
||||||
# ifdef TERMINFO
|
# ifdef TERMINFO
|
||||||
@@ -658,6 +659,7 @@ static struct builtin_term builtin_termcaps[] =
|
|||||||
|
|
||||||
{(int)KS_MS, "y"}, /* save to move cur in reverse mode */
|
{(int)KS_MS, "y"}, /* save to move cur in reverse mode */
|
||||||
{(int)KS_UT, "y"},
|
{(int)KS_UT, "y"},
|
||||||
|
{(int)KS_XN, "y"},
|
||||||
{(int)KS_LE, "\b"},
|
{(int)KS_LE, "\b"},
|
||||||
# ifdef TERMINFO
|
# ifdef TERMINFO
|
||||||
{(int)KS_CM, "\033|%i%p1%d;%p2%dH"},/* cursor motion */
|
{(int)KS_CM, "\033|%i%p1%d;%p2%dH"},/* cursor motion */
|
||||||
@@ -772,6 +774,7 @@ static struct builtin_term builtin_termcaps[] =
|
|||||||
{(int)KS_CSF, IF_EB("\033[101;%dm", ESC_STR "[101;%dm")}, /* set screen foreground color */
|
{(int)KS_CSF, IF_EB("\033[101;%dm", ESC_STR "[101;%dm")}, /* set screen foreground color */
|
||||||
{(int)KS_MS, "y"},
|
{(int)KS_MS, "y"},
|
||||||
{(int)KS_UT, "y"},
|
{(int)KS_UT, "y"},
|
||||||
|
{(int)KS_XN, "y"},
|
||||||
{(int)KS_LE, "\b"},
|
{(int)KS_LE, "\b"},
|
||||||
# ifdef TERMINFO
|
# ifdef TERMINFO
|
||||||
{(int)KS_CM, IF_EB("\033[%i%p1%d;%p2%dH",
|
{(int)KS_CM, IF_EB("\033[%i%p1%d;%p2%dH",
|
||||||
@@ -1207,6 +1210,7 @@ static struct builtin_term builtin_termcaps[] =
|
|||||||
{(int)KS_UCS, "[UCS]"},
|
{(int)KS_UCS, "[UCS]"},
|
||||||
{(int)KS_MS, "[MS]"},
|
{(int)KS_MS, "[MS]"},
|
||||||
{(int)KS_UT, "[UT]"},
|
{(int)KS_UT, "[UT]"},
|
||||||
|
{(int)KS_XN, "[XN]"},
|
||||||
# ifdef TERMINFO
|
# ifdef TERMINFO
|
||||||
{(int)KS_CM, "[%p1%dCM%p2%d]"},
|
{(int)KS_CM, "[%p1%dCM%p2%d]"},
|
||||||
# else
|
# else
|
||||||
@@ -1645,6 +1649,9 @@ set_termname(term)
|
|||||||
if ((T_XS == NULL || T_XS == empty_option)
|
if ((T_XS == NULL || T_XS == empty_option)
|
||||||
&& tgetflag("xs") > 0)
|
&& tgetflag("xs") > 0)
|
||||||
T_XS = (char_u *)"y";
|
T_XS = (char_u *)"y";
|
||||||
|
if ((T_XN == NULL || T_XN == empty_option)
|
||||||
|
&& tgetflag("xn") > 0)
|
||||||
|
T_XN = (char_u *)"y";
|
||||||
if ((T_DB == NULL || T_DB == empty_option)
|
if ((T_DB == NULL || T_DB == empty_option)
|
||||||
&& tgetflag("db") > 0)
|
&& tgetflag("db") > 0)
|
||||||
T_DB = (char_u *)"y";
|
T_DB = (char_u *)"y";
|
||||||
|
@@ -66,6 +66,7 @@ enum SpecialKey
|
|||||||
KS_CSF, /* set foreground color */
|
KS_CSF, /* set foreground color */
|
||||||
KS_CSB, /* set background color */
|
KS_CSB, /* set background color */
|
||||||
KS_XS, /* standout not erased by overwriting (hpterm) */
|
KS_XS, /* standout not erased by overwriting (hpterm) */
|
||||||
|
KS_XN, /* newline glitch */
|
||||||
KS_MB, /* blink mode */
|
KS_MB, /* blink mode */
|
||||||
KS_CAF, /* set foreground color (ANSI) */
|
KS_CAF, /* set foreground color (ANSI) */
|
||||||
KS_CAB, /* set background color (ANSI) */
|
KS_CAB, /* set background color (ANSI) */
|
||||||
@@ -144,6 +145,7 @@ extern char_u *(term_strings[]); /* current terminal strings */
|
|||||||
#define T_CSF (term_str(KS_CSF)) /* set foreground color */
|
#define T_CSF (term_str(KS_CSF)) /* set foreground color */
|
||||||
#define T_CSB (term_str(KS_CSB)) /* set background color */
|
#define T_CSB (term_str(KS_CSB)) /* set background color */
|
||||||
#define T_XS (term_str(KS_XS)) /* standout not erased by overwriting */
|
#define T_XS (term_str(KS_XS)) /* standout not erased by overwriting */
|
||||||
|
#define T_XN (term_str(KS_XN)) /* newline glitch */
|
||||||
#define T_MB (term_str(KS_MB)) /* blink mode */
|
#define T_MB (term_str(KS_MB)) /* blink mode */
|
||||||
#define T_CAF (term_str(KS_CAF)) /* set foreground color (ANSI) */
|
#define T_CAF (term_str(KS_CAF)) /* set foreground color (ANSI) */
|
||||||
#define T_CAB (term_str(KS_CAB)) /* set background color (ANSI) */
|
#define T_CAB (term_str(KS_CAB)) /* set background color (ANSI) */
|
||||||
|
@@ -741,6 +741,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
627,
|
||||||
/**/
|
/**/
|
||||||
626,
|
626,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user