diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-11-28 14:43:26 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-11-28 14:43:26 +0100 |
commit | 4a44120e3dc1d40dd7109658afd5e078360b1d8f (patch) | |
tree | a69a1927ac3aae81b2fe785bdce63608b1fafa4f | |
parent | 4d05af0a64c2e26b13d2ad571debbf5f3b6d384e (diff) | |
download | vim-git-4a44120e3dc1d40dd7109658afd5e078360b1d8f.tar.gz |
patch 8.2.2062: <Cmd> does not handle CTRL-Vv8.2.2062
Problem: <Cmd> does not handle CTRL-V.
Solution: Call get_literal() after encountering CTRL-V. (closes #7387)
-rw-r--r-- | src/getchar.c | 8 | ||||
-rw-r--r-- | src/testdir/test_mapping.vim | 5 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 15 insertions, 0 deletions
diff --git a/src/getchar.c b/src/getchar.c index ad21cba7f..42eed4a9e 100644 --- a/src/getchar.c +++ b/src/getchar.c @@ -3675,6 +3675,14 @@ getcmdkeycmd( } c1 = TO_SPECIAL(c1, c2); } + if (c1 == Ctrl_V) + { + // CTRL-V is followed by octal, hex or other characters, reverses + // what AppendToRedobuffLit() does. + no_reduce_keys = TRUE; // don't merge modifyOtherKeys + c1 = get_literal(); + no_reduce_keys = FALSE; + } if (got_int) aborted = TRUE; diff --git a/src/testdir/test_mapping.vim b/src/testdir/test_mapping.vim index 66edaa80a..1750f39d5 100644 --- a/src/testdir/test_mapping.vim +++ b/src/testdir/test_mapping.vim @@ -972,6 +972,11 @@ func Test_map_cmdkey() unmap <F3> unmap! <F3> %bw! + + " command line ending in "0" is handled without errors + onoremap ix <cmd>eval 0<cr> + call feedkeys('dix.', 'xt') + ounmap ix endfunc " text object enters visual mode diff --git a/src/version.c b/src/version.c index 395aee1a2..ef1c5db31 100644 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2062, +/**/ 2061, /**/ 2060, |