0
0
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:
Bram Moolenaar
2015-02-10 19:20:37 +01:00
parent eb2928595b
commit 494838a3fe
6 changed files with 25 additions and 7 deletions

View File

@@ -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'*

View File

@@ -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)

View File

@@ -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

View File

@@ -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";

View File

@@ -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) */

View File

@@ -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,
/**/ /**/