changeset 29798:e038b8dd7cd9 v9.0.0238

patch 9.0.0238: Shift-Tab shows matches on cmdline when 'wildmenu' is off Commit: https://github.com/vim/vim/commit/300175fd7f874be78826a00f5cb60a7ec2f20655 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Aug 21 18:38:21 2022 +0100 patch 9.0.0238: Shift-Tab shows matches on cmdline when 'wildmenu' is off Problem: Shift-Tab shows matches on cmdline when 'wildmenu' is off. Solution: Only show matches when 'wildmode' contains "list". (closes https://github.com/vim/vim/issues/10951)
author Bram Moolenaar <Bram@vim.org>
date Sun, 21 Aug 2022 19:45:03 +0200
parents f66b7c34e291
children da34550641ed
files src/ex_getln.c src/testdir/test_cmdline.vim src/version.c
diffstat 3 files changed, 26 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -2033,7 +2033,12 @@ getcmdline_int(
 	{
 	    if (nextwild(&xpc, WILD_EXPAND_KEEP, 0, firstc != '@') == OK)
 	    {
-		if (xpc.xp_numfiles > 1)
+		if (xpc.xp_numfiles > 1
+		    && ((!did_wild_list && (wim_flags[wim_index] & WIM_LIST))
+#ifdef FEAT_WILDMENU
+			    || p_wmnu)
+#endif
+			)
 		{
 #ifdef FEAT_WILDMENU
 		    // Trigger the popup menu when wildoptions=pum
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -874,6 +874,24 @@ func Test_cmdline_complete_user_cmd()
   call feedkeys(":Foo b\\x\<Tab>\<Home>\"\<cr>", 'tx')
   call assert_equal('"Foo b\x', @:)
   delcommand Foo
+
+  redraw
+  call assert_equal('~', Screenline(&lines - 1))
+  command! FooOne :
+  command! FooTwo :
+
+  set nowildmenu
+  call feedkeys(":Foo\<Tab>\<Home>\"\<cr>", 'tx')
+  call assert_equal('"FooOne', @:)
+  call assert_equal('~', Screenline(&lines - 1))
+
+  call feedkeys(":Foo\<S-Tab>\<Home>\"\<cr>", 'tx')
+  call assert_equal('"FooTwo', @:)
+  call assert_equal('~', Screenline(&lines - 1))
+
+  delcommand FooOne
+  delcommand FooTwo
+  set wildmenu&
 endfunc
 
 func Test_complete_user_cmd()
--- a/src/version.c
+++ b/src/version.c
@@ -732,6 +732,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    238,
+/**/
     237,
 /**/
     236,