summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-11-26 14:28:15 +0100
committerBram Moolenaar <Bram@vim.org>2019-11-26 14:28:15 +0100
commit38571a04b4eb2853f46df8884750bcb9a8115db8 (patch)
treeb1d9f7ce21a909af8c54a37047e60ea74ec6329d
parentc1faf3dc3879e8a5e486f31445b5a5753dcbc6a3 (diff)
downloadvim-git-38571a04b4eb2853f46df8884750bcb9a8115db8.tar.gz
patch 8.1.2346: CTRL-R CTRL-R doesn't work with modifyOtherKeysv8.1.2346
Problem: CTRL-R CTRL-R doesn't work with modifyOtherKeys. Solution: Allow key codes when fetching argument for CTRL-R. (closes #5266) Also fix CTRL-G in Insert mode.
-rw-r--r--src/edit.c4
-rw-r--r--src/ex_getln.c2
-rw-r--r--src/testdir/test_termcodes.vim21
-rw-r--r--src/version.c2
4 files changed, 29 insertions, 0 deletions
diff --git a/src/edit.c b/src/edit.c
index 1c168b6a8..c74f1bb36 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -3906,6 +3906,7 @@ ins_reg(void)
* deleted when ESC is hit.
*/
++no_mapping;
+ ++allow_keys;
regname = plain_vgetc();
LANGMAP_ADJUST(regname, TRUE);
if (regname == Ctrl_R || regname == Ctrl_O || regname == Ctrl_P)
@@ -3919,6 +3920,7 @@ ins_reg(void)
LANGMAP_ADJUST(regname, TRUE);
}
--no_mapping;
+ --allow_keys;
#ifdef FEAT_EVAL
/* Don't call u_sync() while typing the expression or giving an error
@@ -4010,8 +4012,10 @@ ins_ctrl_g(void)
* deleted when ESC is hit.
*/
++no_mapping;
+ ++allow_keys;
c = plain_vgetc();
--no_mapping;
+ --allow_keys;
switch (c)
{
/* CTRL-G k and CTRL-G <Up>: cursor up to Insstart.col */
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 0a3d9d4da..683215874 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -1747,6 +1747,7 @@ getcmdline_int(
#endif
putcmdline('"', TRUE);
++no_mapping;
+ ++allow_keys;
i = c = plain_vgetc(); /* CTRL-R <char> */
if (i == Ctrl_O)
i = Ctrl_R; /* CTRL-R CTRL-O == CTRL-R CTRL-R */
@@ -1754,6 +1755,7 @@ getcmdline_int(
c = plain_vgetc(); /* CTRL-R CTRL-R <char> */
extra_char = NUL;
--no_mapping;
+ --allow_keys;
#ifdef FEAT_EVAL
/*
* Insert the result of an expression.
diff --git a/src/testdir/test_termcodes.vim b/src/testdir/test_termcodes.vim
index 2678dae29..05f0d18df 100644
--- a/src/testdir/test_termcodes.vim
+++ b/src/testdir/test_termcodes.vim
@@ -1209,6 +1209,27 @@ func Test_modifyOtherKeys_basic()
call RunTest_modifyOtherKeys(function('GetEscCodeCSIu'))
endfunc
+func Test_modifyOtherKeys_no_mapping()
+ set timeoutlen=10
+
+ let @a = 'aaa'
+ call feedkeys(":let x = '" .. GetEscCodeCSI27('R', 5) .. GetEscCodeCSI27('R', 5) .. "a'\<CR>", 'Lx!')
+ call assert_equal("let x = 'aaa'", @:)
+
+ new
+ call feedkeys("a" .. GetEscCodeCSI27('R', 5) .. GetEscCodeCSI27('R', 5) .. "a\<Esc>", 'Lx!')
+ call assert_equal("aaa", getline(1))
+ bwipe!
+
+ new
+ call feedkeys("axx\<CR>yy" .. GetEscCodeCSI27('G', 5) .. GetEscCodeCSI27('K', 5) .. "a\<Esc>", 'Lx!')
+ call assert_equal("axx", getline(1))
+ call assert_equal("yy", getline(2))
+ bwipe!
+
+ set timeoutlen&
+endfunc
+
func RunTest_mapping_shift(key, func)
call setline(1, '')
if a:key == '|'
diff --git a/src/version.c b/src/version.c
index c35a5c05e..b47808dd8 100644
--- a/src/version.c
+++ b/src/version.c
@@ -738,6 +738,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2346,
+/**/
2345,
/**/
2344,