]> granicus.if.org Git - vim/commitdiff
patch 8.2.4829: a key may be simplified to NUL v8.2.4829
authorzeertzjq <zeertzjq@outlook.com>
Tue, 26 Apr 2022 11:51:07 +0000 (12:51 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 26 Apr 2022 11:51:07 +0000 (12:51 +0100)
Problem:    A key may be simplified to NUL.
Solution:   Use K_ZERO instead.  Use macros instead of hard coded values.
            (closes #10290)

src/getchar.c
src/misc2.c
src/testdir/test_termcodes.vim
src/version.c

index 73cf4208be2f8b91fe1554585b5b95ee0d4680af..4caa89eb3f02d40ed68e2388c98d569de576024e 100644 (file)
@@ -1637,7 +1637,11 @@ merge_modifyOtherKeys(int c_arg, int *modifiers)
     if (*modifiers & MOD_MASK_CTRL)
     {
        if ((c >= '`' && c <= 0x7f) || (c >= '@' && c <= '_'))
+       {
            c &= 0x1f;
+           if (c == NUL)
+               c = K_ZERO;
+       }
        else if (c == '6')
            // CTRL-6 is equivalent to CTRL-^
            c = 0x1e;
@@ -3661,7 +3665,7 @@ inchar(
            for (;;)
            {
                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;
            }
            return retesc;
index c23c689c00787ce4c197e75f7c72359a6eba410d..6641a27c73a2681da57fab4ca54dc23c9190e7e6 100644 (file)
@@ -1561,7 +1561,7 @@ extract_modifiers(int key, int *modp, int simplify, int *did_simplify)
        key = Ctrl_chr(key);
        modifiers &= ~MOD_MASK_CTRL;
        // <C-@> is <Nul>
-       if (key == 0)
+       if (key == NUL)
            key = K_ZERO;
        if (did_simplify != NULL)
            *did_simplify = TRUE;
index 6e4bbd19ca93abb19cdbb83e5850f42f21407b87..ddbe707d10e65452faab59f517941dff91aa58d4 100644 (file)
@@ -2437,5 +2437,11 @@ func Test_terminal_builtin_without_gui()
   call assert_notequal(-1, index(output, 'builtin_dumb'))
 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
index 945b6a18a70d649d3e9e8dffe449973b5b5b63ca..54f350bf873ecdcfe03d1a7530e9f2756bbbb2cf 100644 (file)
@@ -746,6 +746,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    4829,
 /**/
     4828,
 /**/