1
0
forked from aniani/vim

patch 8.0.0302: cannot set terminal key codes with :let

Problem:    Cannot set terminal key codes with :let.
Solution:   Make it work.
This commit is contained in:
Bram Moolenaar
2017-02-04 19:49:16 +01:00
parent 698f8b207b
commit e353c402e6
3 changed files with 76 additions and 0 deletions

View File

@@ -9197,7 +9197,35 @@ get_option_value(
opt_idx = findoption(name);
if (opt_idx < 0) /* unknown option */
{
int key;
if (STRLEN(name) == 4 && name[0] == 't' && name[1] == '_'
&& (key = find_key_option(name)) != 0)
{
char_u key_name[2];
char_u *p;
if (key < 0)
{
key_name[0] = KEY2TERMCAP0(key);
key_name[1] = KEY2TERMCAP1(key);
}
else
{
key_name[0] = KS_KEY;
key_name[1] = (key & 0xff);
}
p = find_termcode(key_name);
if (p != NULL)
{
if (stringval != NULL)
*stringval = vim_strsave(p);
return 0;
}
}
return -3;
}
varp = get_varp_scope(&(options[opt_idx]), opt_flags);
@@ -9455,7 +9483,33 @@ set_option_value(
opt_idx = findoption(name);
if (opt_idx < 0)
{
int key;
if (STRLEN(name) == 4 && name[0] == 't' && name[1] == '_'
&& (key = find_key_option(name)) != 0)
{
char_u key_name[2];
if (key < 0)
{
key_name[0] = KEY2TERMCAP0(key);
key_name[1] = KEY2TERMCAP1(key);
}
else
{
key_name[0] = KS_KEY;
key_name[1] = (key & 0xff);
}
add_termcode(key_name, string, FALSE);
if (full_screen)
ttest(FALSE);
redraw_all_later(CLEAR);
return NULL;
}
EMSG2(_("E355: Unknown option: %s"), name);
}
else
{
flags = options[opt_idx].flags;