mirror of
https://github.com/vim/vim.git
synced 2025-09-02 21:13:50 -04:00
patch 8.2.3864: cannot disable requesting key codes from xterm
Problem: Cannot disable requesting key codes from xterm. Solution: Add the 'xtermcodes' option, default on.
This commit is contained in:
parent
8d95d7091d
commit
6f79e614b2
@ -9206,4 +9206,16 @@ A jump table for the options with a short description can be found at |Q_op|.
|
|||||||
screen. When non-zero, characters are sent to the terminal one by
|
screen. When non-zero, characters are sent to the terminal one by
|
||||||
one. For debugging purposes.
|
one. For debugging purposes.
|
||||||
|
|
||||||
|
*'xtermcodes'* *'noxtermcodes'*
|
||||||
|
'xtermcodes' boolean (default on)
|
||||||
|
global
|
||||||
|
When detecting xterm patchlevel 141 or higher with the termresponse
|
||||||
|
mechanism and this option is set, Vim will request the actual termimal
|
||||||
|
key codes and number of colors from the terminal. This takes care of
|
||||||
|
various configuration options of the terminal that cannot be obtained
|
||||||
|
from the termlib/terminfo entry, see |xterm-codes|.
|
||||||
|
A side effect may be that t_Co changes and Vim will redraw the
|
||||||
|
display.
|
||||||
|
|
||||||
|
|
||||||
vim:tw=78:ts=8:noet:ft=help:norl:
|
vim:tw=78:ts=8:noet:ft=help:norl:
|
||||||
|
@ -556,8 +556,15 @@ request the key codes directly from the xterm. The responses are used to
|
|||||||
adjust the various t_ codes. This avoids the problem that the xterm can
|
adjust the various t_ codes. This avoids the problem that the xterm can
|
||||||
produce different codes, depending on the mode it is in (8-bit, VT102,
|
produce different codes, depending on the mode it is in (8-bit, VT102,
|
||||||
VT220, etc.). The result is that codes like <xF1> are no longer needed.
|
VT220, etc.). The result is that codes like <xF1> are no longer needed.
|
||||||
Note: This is only done on startup. If the xterm options are changed after
|
|
||||||
Vim has started, the escape sequences may not be recognized anymore.
|
One of the codes that can change is 't_Co', the number of colors. This will
|
||||||
|
trigger a redraw. If this is a problem, reset the 'xtermcodes' option as
|
||||||
|
early as possible: >
|
||||||
|
set noxtermcodes
|
||||||
|
|
||||||
|
Note: Requesting the key codes is only done on startup. If the xterm options
|
||||||
|
are changed after Vim has started, the escape sequences may not be recognized
|
||||||
|
anymore.
|
||||||
|
|
||||||
*xterm-true-color*
|
*xterm-true-color*
|
||||||
Vim supports using true colors in the terminal (taken from |highlight-guifg|
|
Vim supports using true colors in the terminal (taken from |highlight-guifg|
|
||||||
|
@ -562,14 +562,22 @@ endif
|
|||||||
call <SID>Header(gettext("terminal"))
|
call <SID>Header(gettext("terminal"))
|
||||||
call <SID>AddOption("term", gettext("name of the used terminal"))
|
call <SID>AddOption("term", gettext("name of the used terminal"))
|
||||||
call <SID>OptionG("term", &term)
|
call <SID>OptionG("term", &term)
|
||||||
|
|
||||||
call <SID>AddOption("ttytype", gettext("alias for 'term'"))
|
call <SID>AddOption("ttytype", gettext("alias for 'term'"))
|
||||||
call <SID>OptionG("tty", &tty)
|
call <SID>OptionG("tty", &tty)
|
||||||
|
|
||||||
call <SID>AddOption("ttybuiltin", gettext("check built-in termcaps first"))
|
call <SID>AddOption("ttybuiltin", gettext("check built-in termcaps first"))
|
||||||
call <SID>BinOptionG("tbi", &tbi)
|
call <SID>BinOptionG("tbi", &tbi)
|
||||||
|
|
||||||
call <SID>AddOption("ttyfast", gettext("terminal connection is fast"))
|
call <SID>AddOption("ttyfast", gettext("terminal connection is fast"))
|
||||||
call <SID>BinOptionG("tf", &tf)
|
call <SID>BinOptionG("tf", &tf)
|
||||||
|
|
||||||
|
call <SID>AddOption("xtermcodes", gettext("request terminal key codes when an xterm is detected"))
|
||||||
|
call <SID>BinOptionG("xtermcodes", &xtermcodes)
|
||||||
|
|
||||||
call <SID>AddOption("weirdinvert", gettext("terminal that requires extra redrawing"))
|
call <SID>AddOption("weirdinvert", gettext("terminal that requires extra redrawing"))
|
||||||
call <SID>BinOptionG("wiv", &wiv)
|
call <SID>BinOptionG("wiv", &wiv)
|
||||||
|
|
||||||
call <SID>AddOption("esckeys", gettext("recognize keys that start with <Esc> in Insert mode"))
|
call <SID>AddOption("esckeys", gettext("recognize keys that start with <Esc> in Insert mode"))
|
||||||
call <SID>BinOptionG("ek", &ek)
|
call <SID>BinOptionG("ek", &ek)
|
||||||
call <SID>AddOption("scrolljump", gettext("minimal number of lines to scroll at a time"))
|
call <SID>AddOption("scrolljump", gettext("minimal number of lines to scroll at a time"))
|
||||||
|
@ -485,6 +485,7 @@ EXTERN int p_deco; // 'delcombine'
|
|||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
EXTERN char_u *p_ccv; // 'charconvert'
|
EXTERN char_u *p_ccv; // 'charconvert'
|
||||||
#endif
|
#endif
|
||||||
|
EXTERN int p_cdh; // 'cdhome'
|
||||||
EXTERN char_u *p_cino; // 'cinoptions'
|
EXTERN char_u *p_cino; // 'cinoptions'
|
||||||
#ifdef FEAT_CMDWIN
|
#ifdef FEAT_CMDWIN
|
||||||
EXTERN char_u *p_cedit; // 'cedit'
|
EXTERN char_u *p_cedit; // 'cedit'
|
||||||
@ -1094,7 +1095,7 @@ EXTERN int p_write; // 'write'
|
|||||||
EXTERN int p_wa; // 'writeany'
|
EXTERN int p_wa; // 'writeany'
|
||||||
EXTERN int p_wb; // 'writebackup'
|
EXTERN int p_wb; // 'writebackup'
|
||||||
EXTERN long p_wd; // 'writedelay'
|
EXTERN long p_wd; // 'writedelay'
|
||||||
EXTERN int p_cdh; // 'cdhome'
|
EXTERN int p_xtermcodes; // 'xtermcodes'
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "indir" values for buffer-local options.
|
* "indir" values for buffer-local options.
|
||||||
|
@ -2941,6 +2941,9 @@ static struct vimoption options[] =
|
|||||||
{"writedelay", "wd", P_NUM|P_VI_DEF,
|
{"writedelay", "wd", P_NUM|P_VI_DEF,
|
||||||
(char_u *)&p_wd, PV_NONE,
|
(char_u *)&p_wd, PV_NONE,
|
||||||
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
|
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
|
||||||
|
{"xtermcodes", NULL, P_BOOL|P_VI_DEF,
|
||||||
|
(char_u *)&p_xtermcodes, PV_NONE,
|
||||||
|
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
|
||||||
|
|
||||||
// terminal output codes
|
// terminal output codes
|
||||||
#define p_term(sss, vvv) {sss, NULL, P_STRING|P_VI_DEF|P_RALL|P_SECURE, \
|
#define p_term(sss, vvv) {sss, NULL, P_STRING|P_VI_DEF|P_RALL|P_SECURE, \
|
||||||
|
@ -4694,7 +4694,7 @@ handle_version_response(int first, int *arg, int argc, char_u *tp)
|
|||||||
|
|
||||||
// If xterm version >= 141 try to get termcap codes. For other
|
// If xterm version >= 141 try to get termcap codes. For other
|
||||||
// terminals the request should be ignored.
|
// terminals the request should be ignored.
|
||||||
if (version >= 141)
|
if (version >= 141 && p_xtermcodes)
|
||||||
{
|
{
|
||||||
LOG_TR(("Enable checking for XT codes"));
|
LOG_TR(("Enable checking for XT codes"));
|
||||||
check_for_codes = TRUE;
|
check_for_codes = TRUE;
|
||||||
@ -6446,8 +6446,7 @@ got_code_from_term(char_u *code, int len)
|
|||||||
if (name[0] == 'C' && name[1] == 'o')
|
if (name[0] == 'C' && name[1] == 'o')
|
||||||
{
|
{
|
||||||
// Color count is not a key code.
|
// Color count is not a key code.
|
||||||
i = atoi((char *)str);
|
may_adjust_color_count(atoi((char *)str));
|
||||||
may_adjust_color_count(i);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -749,6 +749,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 */
|
||||||
|
/**/
|
||||||
|
3864,
|
||||||
/**/
|
/**/
|
||||||
3863,
|
3863,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user