# HG changeset patch # User Bram Moolenaar # Date 1570907704 -7200 # Node ID a9cf41bcb5d6463ef943769515a6ce3bb84b4523 # Parent 319c64023a01009086ec5470bb9152b19b88dc47 patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeys Commit: https://github.com/vim/vim/commit/171a921b51101c1261040d28a8147c8829b675d3 Author: Bram Moolenaar Date: Sat Oct 12 21:08:59 2019 +0200 patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeys Problem: Side effects when using t_ti to enable modifyOtherKeys. Solution: Add t_TI and t_TE. diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt --- a/runtime/doc/term.txt +++ b/runtime/doc/term.txt @@ -1,4 +1,4 @@ -*term.txt* For Vim version 8.1. Last change: 2019 May 07 +*term.txt* For Vim version 8.1. Last change: 2019 Oct 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -80,14 +80,19 @@ can do this best in your .vimrc. Exampl < *raw-terminal-mode* For normal editing the terminal will be put into "raw" mode. The strings -defined with 't_ti' and 't_ks' will be sent to the terminal. Normally this -puts the terminal in a state where the termcap codes are valid and activates -the cursor and function keys. When Vim exits the terminal will be put back -into the mode it was before Vim started. The strings defined with 't_te' and -'t_ke' will be sent to the terminal. On the Amiga, with commands that execute -an external command (e.g., "!!"), the terminal will be put into Normal mode -for a moment. This means that you can stop the output to the screen by -hitting a printing key. Output resumes when you hit . +defined with 't_ti', 't_TI' and 't_ks' will be sent to the terminal. Normally +this puts the terminal in a state where the termcap codes are valid and +activates the cursor and function keys. +When Vim exits the terminal will be put back into the mode it was before Vim +started. The strings defined with 't_te', 't_TE' and 't_ke' will be sent to +the terminal. On the Amiga, with commands that execute an external command +(e.g., "!!"), the terminal will be put into Normal mode for a moment. This +means that you can stop the output to the screen by hitting a printing key. +Output resumes when you hit . + +Note: When 't_ti' is not empty, Vim assumes that it causes switching to the +alternate screen. This may slightly change what happens when executing a +shell command or exiting Vim. To avoid this use 't_TI' and 't_TE'. *xterm-bracketed-paste* When the 't_BE' option is set then 't_BE' will be sent to the @@ -297,8 +302,8 @@ OUTPUT CODES *terminal-output-codes t_se standout end *t_se* *'t_se'* t_so standout mode *t_so* *'t_so'* t_sr scroll reverse (backward) *t_sr* *'t_sr'* - t_te out of "termcap" mode *t_te* *'t_te'* - t_ti put terminal in "termcap" mode *t_ti* *'t_ti'* + t_te end of "termcap" mode *t_te* *'t_te'* + t_ti put terminal into "termcap" mode *t_ti* *'t_ti'* t_ts set window title start (to status line) *t_ts* *'t_ts'* t_ue underline end *t_ue* *'t_ue'* t_us underline mode *t_us* *'t_us'* @@ -359,6 +364,8 @@ Added by Vim (there are no standard code t_RT restore window title from stack *t_RT* *'t_RT'* t_Si save icon text to stack *t_Si* *'t_Si'* t_Ri restore icon text from stack *t_Ri* *'t_Ri'* + t_TE end of "raw" mode *t_TE* *'t_TE'* + t_TI put terminal into "raw" mode *t_TI* *'t_TI'* Some codes have a start, middle and end part. The start and end are defined by the termcap option, the middle part is text. diff --git a/src/optiondefs.h b/src/optiondefs.h --- a/src/optiondefs.h +++ b/src/optiondefs.h @@ -2969,7 +2969,9 @@ static struct vimoption options[] = p_term("t_ST", T_CST) p_term("t_Te", T_STE) p_term("t_te", T_TE) + p_term("t_TE", T_CTE) p_term("t_ti", T_TI) + p_term("t_TI", T_CTI) p_term("t_Ts", T_STS) p_term("t_ts", T_TS) p_term("t_u7", T_U7) diff --git a/src/term.c b/src/term.c --- a/src/term.c +++ b/src/term.c @@ -1624,6 +1624,7 @@ get_term_entries(int *height, int *width {KS_CM, "cm"}, {KS_SR, "sr"}, {KS_CRI,"RI"}, {KS_VB, "vb"}, {KS_KS, "ks"}, {KS_KE, "ke"}, {KS_TI, "ti"}, {KS_TE, "te"}, + {KS_CTI, "TI"}, {KS_CTE, "TE"}, {KS_BC, "bc"}, {KS_CSB,"Sb"}, {KS_CSF,"Sf"}, {KS_CAB,"AB"}, {KS_CAF,"AF"}, {KS_LE, "le"}, {KS_ND, "nd"}, {KS_OP, "op"}, {KS_CRV, "RV"}, @@ -3462,6 +3463,7 @@ starttermcap(void) if (full_screen && !termcap_active) { out_str(T_TI); /* start termcap mode */ + out_str(T_CTI); /* start "raw" mode */ out_str(T_KS); /* start "keypad transmit" mode */ out_str(T_BE); /* enable bracketed paste mode */ out_flush(); @@ -3517,6 +3519,7 @@ stoptermcap(void) out_flush(); termcap_active = FALSE; cursor_on(); /* just in case it is still off */ + out_str(T_CTE); /* stop "raw" mode */ out_str(T_TE); /* stop termcap mode */ screen_start(); /* don't know where cursor is now */ out_flush(); diff --git a/src/term.h b/src/term.h --- a/src/term.h +++ b/src/term.h @@ -65,7 +65,9 @@ enum SpecialKey KS_KS, /* put term in "keypad transmit" mode */ KS_KE, /* out of "keypad transmit" mode */ KS_TI, /* put terminal in termcap mode */ - KS_TE, /* out of termcap mode */ + KS_CTI, /* put terminal in "raw" mode */ + KS_TE, /* end of termcap mode */ + KS_CTE, /* end of "raw" mode */ KS_BC, /* backspace character (cursor left) */ KS_CCS, /* cur is relative to scroll region */ KS_CCO, /* number of colors */ @@ -164,7 +166,9 @@ extern char_u *(term_strings[]); /* c #define T_KS (TERM_STR(KS_KS)) /* put term in "keypad transmit" mode */ #define T_KE (TERM_STR(KS_KE)) /* out of "keypad transmit" mode */ #define T_TI (TERM_STR(KS_TI)) /* put terminal in termcap mode */ -#define T_TE (TERM_STR(KS_TE)) /* out of termcap mode */ +#define T_CTI (TERM_STR(KS_CTI)) /* put terminal in "raw" mode */ +#define T_TE (TERM_STR(KS_TE)) /* end of termcap mode */ +#define T_CTE (TERM_STR(KS_CTE)) /* end of "raw" mode */ #define T_BC (TERM_STR(KS_BC)) /* backspace character */ #define T_CCS (TERM_STR(KS_CCS)) /* cur is relative to scroll region */ #define T_CCO (TERM_STR(KS_CCO)) /* number of colors */ diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2144, +/**/ 2143, /**/ 2142,