summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-11-28 14:43:26 +0100
committerBram Moolenaar <Bram@vim.org>2020-11-28 14:43:26 +0100
commit4a44120e3dc1d40dd7109658afd5e078360b1d8f (patch)
treea69a1927ac3aae81b2fe785bdce63608b1fafa4f
parent4d05af0a64c2e26b13d2ad571debbf5f3b6d384e (diff)
downloadvim-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.c8
-rw-r--r--src/testdir/test_mapping.vim5
-rw-r--r--src/version.c2
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,