0
0
mirror of https://github.com/vim/vim.git synced 2025-09-26 04:04:07 -04:00

patch 8.2.4829: a key may be simplified to NUL

Problem:    A key may be simplified to NUL.
Solution:   Use K_ZERO instead.  Use macros instead of hard coded values.
            (closes #10290)
This commit is contained in:
zeertzjq
2022-04-26 12:51:07 +01:00
committed by Bram Moolenaar
parent abeb09b2c5
commit 17c95d9608
4 changed files with 14 additions and 2 deletions

View File

@@ -1637,7 +1637,11 @@ merge_modifyOtherKeys(int c_arg, int *modifiers)
if (*modifiers & MOD_MASK_CTRL) if (*modifiers & MOD_MASK_CTRL)
{ {
if ((c >= '`' && c <= 0x7f) || (c >= '@' && c <= '_')) if ((c >= '`' && c <= 0x7f) || (c >= '@' && c <= '_'))
{
c &= 0x1f; c &= 0x1f;
if (c == NUL)
c = K_ZERO;
}
else if (c == '6') else if (c == '6')
// CTRL-6 is equivalent to CTRL-^ // CTRL-6 is equivalent to CTRL-^
c = 0x1e; c = 0x1e;
@@ -3661,7 +3665,7 @@ inchar(
for (;;) for (;;)
{ {
len = ui_inchar(dum, DUM_LEN, 0L, 0); len = ui_inchar(dum, DUM_LEN, 0L, 0);
if (len == 0 || (len == 1 && dum[0] == 3)) if (len == 0 || (len == 1 && dum[0] == Ctrl_C))
break; break;
} }
return retesc; return retesc;

View File

@@ -1561,7 +1561,7 @@ extract_modifiers(int key, int *modp, int simplify, int *did_simplify)
key = Ctrl_chr(key); key = Ctrl_chr(key);
modifiers &= ~MOD_MASK_CTRL; modifiers &= ~MOD_MASK_CTRL;
// <C-@> is <Nul> // <C-@> is <Nul>
if (key == 0) if (key == NUL)
key = K_ZERO; key = K_ZERO;
if (did_simplify != NULL) if (did_simplify != NULL)
*did_simplify = TRUE; *did_simplify = TRUE;

View File

@@ -2437,5 +2437,11 @@ func Test_terminal_builtin_without_gui()
call assert_notequal(-1, index(output, 'builtin_dumb')) call assert_notequal(-1, index(output, 'builtin_dumb'))
endfunc endfunc
func Test_simplify_ctrl_at()
" feeding unsimplified CTRL-@ should still trigger i_CTRL-@
call feedkeys("ifoo\<Esc>A\<*C-@>", 'xt')
call assert_equal('foofoo', getline(1))
endfunc
" vim: shiftwidth=2 sts=2 expandtab " vim: shiftwidth=2 sts=2 expandtab

View File

@@ -746,6 +746,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 */
/**/
4829,
/**/ /**/
4828, 4828,
/**/ /**/