summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-03-04 14:51:06 +0000
committerBram Moolenaar <Bram@vim.org>2022-03-04 14:51:06 +0000
commitd979d64fa269ff47a96fc6aed2f4cdd066753c0c (patch)
tree1d8b94bce692199f62b828fce7733e4a0e65ca7a
parent21efafe4c25373929979c72dc8aafa119f12dd8b (diff)
patch 8.2.4502: in the GUI a modifier is not recognized after CTRL-Xv8.2.4502
Problem: In the GUI a modifier is not recognized for the key typed after CTRL-X, which may result in a mapping to be used. (Daniel Steinberg) Solution: Recognize a modifier starting with CSI. (closes #9889)
-rw-r--r--src/getchar.c2
-rw-r--r--src/testdir/test_ins_complete.vim13
-rw-r--r--src/version.c2
3 files changed, 15 insertions, 2 deletions
diff --git a/src/getchar.c b/src/getchar.c
index 9939bbdbcb..2fbbd4f6e1 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -2331,7 +2331,7 @@ at_ctrl_x_key(void)
int c = *p;
if (typebuf.tb_len > 3
- && c == K_SPECIAL
+ && (c == K_SPECIAL || c == CSI) // CSI is used by the GUI
&& p[1] == KS_MODIFIER
&& (p[2] & MOD_MASK_CTRL))
c = p[3] & 0x1f;
diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim
index 033bb37f12..3712abe690 100644
--- a/src/testdir/test_ins_complete.vim
+++ b/src/testdir/test_ins_complete.vim
@@ -1294,7 +1294,18 @@ func Test_z1_complete_no_history()
exe "normal owh\<C-X>\<C-K>"
exe "normal owh\<C-N>"
call assert_equal(currmess, execute('messages'))
- close!
+ bwipe!
+endfunc
+
+" A mapping is not used for the key after CTRL-X.
+func Test_no_mapping_for_ctrl_x_key()
+ new
+ inoremap <C-K> <Cmd>let was_mapped = 'yes'<CR>
+ setlocal dictionary=README.txt
+ call feedkeys("aexam\<C-X>\<C-K> ", 'xt')
+ call assert_equal('example ', getline(1))
+ call assert_false(exists('was_mapped'))
+ bwipe!
endfunc
" Test for different ways of setting the 'completefunc' option
diff --git a/src/version.c b/src/version.c
index 18a0442ee8..51dc6de624 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4502,
+/**/
4501,
/**/
4500,