diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-11-26 14:28:15 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-11-26 14:28:15 +0100 |
commit | 38571a04b4eb2853f46df8884750bcb9a8115db8 (patch) | |
tree | b1d9f7ce21a909af8c54a37047e60ea74ec6329d | |
parent | c1faf3dc3879e8a5e486f31445b5a5753dcbc6a3 (diff) | |
download | vim-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.c | 4 | ||||
-rw-r--r-- | src/ex_getln.c | 2 | ||||
-rw-r--r-- | src/testdir/test_termcodes.vim | 21 | ||||
-rw-r--r-- | src/version.c | 2 |
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, |