summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-10-12 21:08:59 +0200
committerBram Moolenaar <Bram@vim.org>2019-10-12 21:08:59 +0200
commit171a921b51101c1261040d28a8147c8829b675d3 (patch)
treef6c53c7bc562a04ef8529e34d0f16fe9bd2f4fcf
parent4facea310c2788c88f021b262658b847381a50a8 (diff)
patch 8.1.2144: side effects when using t_ti to enable modifyOtherKeysv8.1.2144
Problem: Side effects when using t_ti to enable modifyOtherKeys. Solution: Add t_TI and t_TE.
-rw-r--r--runtime/doc/term.txt29
-rw-r--r--src/optiondefs.h2
-rw-r--r--src/term.c3
-rw-r--r--src/term.h8
-rw-r--r--src/version.c2
5 files changed, 31 insertions, 13 deletions
diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt
index 79debe3a1e..133d0e991b 100644
--- 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. Example: >
<
*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 <BS>.
+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 <BS>.
+
+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 codes for these):
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
index 3745d07ced..47f17ed392 100644
--- 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
index e30506bc42..8ab5f42710 100644
--- 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
index 219a2083d2..0791f460b4 100644
--- 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[]); /* current terminal strings */
#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
index 615d24e141..8ad31a09c2 100644
--- 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,