From bf065d9bb654263e59949a68d0b90fd196ab1ab8 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Wed, 27 Apr 2022 20:28:58 +0800 Subject: vim-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 vim/vim#10290) https://github.com/vim/vim/commit/17c95d9608370559441bb73941ba6d9a4b6b26bd --- src/nvim/getchar.c | 4 ++-- src/nvim/keymap.c | 2 +- src/nvim/testdir/test_termcodes.vim | 9 +++++++++ 3 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 src/nvim/testdir/test_termcodes.vim (limited to 'src') diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c index 2fe732d6f4..9826317102 100644 --- a/src/nvim/getchar.c +++ b/src/nvim/getchar.c @@ -1450,7 +1450,7 @@ int merge_modifiers(int c_arg, int *modifiers) if (*modifiers & MOD_MASK_CTRL) { if ((c >= '`' && c <= 0x7f) || (c >= '@' && c <= '_')) { c &= 0x1f; - if (c == 0) { + if (c == NUL) { c = K_ZERO; } } else if (c == '6') { @@ -2738,7 +2738,7 @@ int inchar(char_u *buf, int maxlen, long wait_time) for (;;) { len = os_inchar(dum, DUM_LEN, 0L, 0, NULL); - if (len == 0 || (len == 1 && dum[0] == 3)) { + if (len == 0 || (len == 1 && dum[0] == Ctrl_C)) { break; } } diff --git a/src/nvim/keymap.c b/src/nvim/keymap.c index 5c4fe13e39..db51237771 100644 --- a/src/nvim/keymap.c +++ b/src/nvim/keymap.c @@ -785,7 +785,7 @@ static int extract_modifiers(int key, int *modp, const bool simplify, bool *cons && ((key >= '?' && key <= '_') || ASCII_ISALPHA(key))) { key = CTRL_CHR(key); modifiers &= ~MOD_MASK_CTRL; - if (key == 0) { // is + if (key == NUL) { // is key = K_ZERO; } if (did_simplify != NULL) { diff --git a/src/nvim/testdir/test_termcodes.vim b/src/nvim/testdir/test_termcodes.vim new file mode 100644 index 0000000000..ecd408264d --- /dev/null +++ b/src/nvim/testdir/test_termcodes.vim @@ -0,0 +1,9 @@ + +func Test_simplify_ctrl_at() + " feeding unsimplified CTRL-@ should still trigger i_CTRL-@ + call feedkeys("ifoo\A\<*C-@>", 'xt') + call assert_equal('foofoo', getline(1)) +endfunc + + +" vim: shiftwidth=2 sts=2 expandtab -- cgit