summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-10-04 20:14:28 +0100
committerBram Moolenaar <Bram@vim.org>2022-10-04 20:14:28 +0100
commit2cd0f27b75c4497bec872819a965b3d6b4d55030 (patch)
tree4949cd7728a75470f146acd7778160b86da6059f
parentcaf05f504e062642c35a919b04f1b5638f994602 (diff)
downloadvim-git-2cd0f27b75c4497bec872819a965b3d6b4d55030.tar.gz
patch 9.0.0660: mapping with CTRL keys does not work in the GUIv9.0.0660
Problem: Mapping with CTRL keys does not work in the GUI. Solution: Recognize CSI next to K_SPECIAL. (closes #11275, closes #11270)
-rw-r--r--src/map.c6
-rw-r--r--src/testdir/test_gui.vim19
-rw-r--r--src/version.c2
3 files changed, 26 insertions, 1 deletions
diff --git a/src/map.c b/src/map.c
index 526ed50c4..e99da373b 100644
--- a/src/map.c
+++ b/src/map.c
@@ -1753,7 +1753,11 @@ vim_strsave_escape_csi(char_u *p)
d = res;
for (s = p; *s != NUL; )
{
- if (s[0] == K_SPECIAL && s[1] != NUL && s[2] != NUL)
+ if ((s[0] == K_SPECIAL
+#ifdef FEAT_GUI
+ || (gui.in_use && s[0] == CSI)
+#endif
+ ) && s[1] != NUL && s[2] != NUL)
{
// Copy special key unmodified.
*d++ = *s++;
diff --git a/src/testdir/test_gui.vim b/src/testdir/test_gui.vim
index 447eee865..8ac0985c3 100644
--- a/src/testdir/test_gui.vim
+++ b/src/testdir/test_gui.vim
@@ -1732,4 +1732,23 @@ func Test_gui_lowlevel_keyevent()
bw!
endfunc
+func Test_gui_macro_csi()
+ " Test for issue #11270
+ nnoremap <C-L> <Cmd>let g:triggered = 1<CR>
+ let @q = "\x9b\xfc\x04L"
+ norm @q
+ call assert_equal(1, g:triggered)
+ unlet g:triggered
+ nunmap <C-L>
+
+ " Test for issue #11057
+ inoremap <C-D>t bbb
+ call setline(1, "\t")
+ let @q = "i\x9b\xfc\x04D"
+ " The end of :normal is like a mapping timing out
+ norm @q
+ call assert_equal('', getline(1))
+ iunmap <C-D>t
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index ce0dce07a..3adb51332 100644
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 660,
+/**/
659,
/**/
658,