changeset 23356:32a9d01c2a49 v8.2.2221

patch 8.2.2221: if <Down> is mapped on the command line 'wildchar' is inserted Commit: https://github.com/vim/vim/commit/b0ac4ea5e1c5f0ff4e951978c32ccfffe46916f8 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Dec 26 12:06:54 2020 +0100 patch 8.2.2221: if <Down> is mapped on the command line 'wildchar' is inserted Problem: If <Down> is mapped on the command line 'wildchar' is inserted. Solution: Set KeyTyped when using 'wildchar'. (closes https://github.com/vim/vim/issues/7552)
author Bram Moolenaar <Bram@vim.org>
date Sat, 26 Dec 2020 12:15:04 +0100
parents b63398c0d29e
children 2cd9078b4d97
files src/cmdexpand.c src/testdir/test_cmdline.vim src/version.c
diffstat 3 files changed, 21 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -2680,7 +2680,10 @@ wildmenu_process_key(cmdline_info_T *ccl
 	// Hitting <Down> after "emenu Name.": complete submenu
 	if (c == K_DOWN && cclp->cmdpos > 0
 		&& cclp->cmdbuff[cclp->cmdpos - 1] == '.')
+	{
 	    c = p_wc;
+	    KeyTyped = TRUE;  // in case the key was mapped
+	}
 	else if (c == K_UP)
 	{
 	    // Hitting <Up>: Remove one submenu name in front of the
@@ -2714,6 +2717,7 @@ wildmenu_process_key(cmdline_info_T *ccl
 	    if (i > 0)
 		cmdline_del(cclp, i);
 	    c = p_wc;
+	    KeyTyped = TRUE;  // in case the key was mapped
 	    xp->xp_context = EXPAND_NOTHING;
 	}
     }
@@ -2738,6 +2742,7 @@ wildmenu_process_key(cmdline_info_T *ccl
 	{
 	    // go down a directory
 	    c = p_wc;
+	    KeyTyped = TRUE;  // in case the key was mapped
 	}
 	else if (STRNCMP(xp->xp_pattern, upseg + 1, 3) == 0 && c == K_DOWN)
 	{
@@ -2763,6 +2768,7 @@ wildmenu_process_key(cmdline_info_T *ccl
 	    {
 		cmdline_del(cclp, j - 2);
 		c = p_wc;
+		KeyTyped = TRUE;  // in case the key was mapped
 	    }
 	}
 	else if (c == K_UP)
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -58,6 +58,19 @@ func Test_complete_wildmenu()
   call feedkeys(":e Xdir1/\<Tab>\<Down>\<Up>\<Right>\<CR>", 'tx')
   call assert_equal('testfile1', getline(1))
 
+  +  " <C-J>/<C-K> mappings to go up/down directories when 'wildcharm' is
+  " different than 'wildchar'.
+  set wildcharm=<C-Z>
+  cnoremap <C-J> <Down><C-Z>
+  cnoremap <C-K> <Up><C-Z>
+  call feedkeys(":e Xdir1/\<Tab>\<C-J>\<CR>", 'tx')
+  call assert_equal('testfile3', getline(1))
+  call feedkeys(":e Xdir1/\<Tab>\<C-J>\<C-K>\<CR>", 'tx')
+  call assert_equal('testfile1', getline(1))
+  set wildcharm=0
+  cunmap <C-J>
+  cunmap <C-K>
+
   " Test for canceling the wild menu by adding a character
   redrawstatus
   call feedkeys(":e Xdir1/\<Tab>x\<C-B>\"\<CR>", 'xt')
--- 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 */
 /**/
+    2221,
+/**/
     2220,
 /**/
     2219,