diff options
author | bfredl <bjorn.linse@gmail.com> | 2022-01-27 09:00:01 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-27 09:00:01 +0100 |
commit | 3d0149f9848e22e7eb15652b1ec01d5920bd680a (patch) | |
tree | 8ad5ed1eb57cd4bdb90fead894b7c8e70e0627b3 /src/nvim/edit.c | |
parent | 9c4e617064a100856bb06e1dec5be27cf22f78f4 (diff) | |
parent | 95873aa3eb566ee83c22c51f1d48118029c4f9ab (diff) | |
download | rneovim-3d0149f9848e22e7eb15652b1ec01d5920bd680a.tar.gz rneovim-3d0149f9848e22e7eb15652b1ec01d5920bd680a.tar.bz2 rneovim-3d0149f9848e22e7eb15652b1ec01d5920bd680a.zip |
Merge pull request #17191 from zeertzjq/vim-8.2.4203
vim-patch:8.2.4203: entering a character with CTRL-V may include modifiers
Diffstat (limited to 'src/nvim/edit.c')
-rw-r--r-- | src/nvim/edit.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/nvim/edit.c b/src/nvim/edit.c index 2f25cdb596..b7656230dd 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -5635,8 +5635,12 @@ int get_literal(void) i = 0; for (;;) { nc = plain_vgetc(); - if (!(State & CMDLINE) - && MB_BYTE2LEN_CHECK(nc) == 1) { + if ((mod_mask & ~MOD_MASK_SHIFT) != 0) { + // A character with non-Shift modifiers should not be a valid + // character for i_CTRL-V_digit. + break; + } + if (!(State & CMDLINE) && MB_BYTE2LEN_CHECK(nc) == 1) { add_to_showcmd(nc); } if (nc == 'x' || nc == 'X') { @@ -5702,6 +5706,8 @@ int get_literal(void) --no_mapping; if (nc) { vungetc(nc); + // A character typed with i_CTRL-V_digit cannot have modifiers. + mod_mask = 0; } got_int = false; // CTRL-C typed after CTRL-V is not an interrupt return cc; |