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 #10951)
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 0427337..6b62d84 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -2033,7 +2033,12 @@
{
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
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index be688e3..3372e8d 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -874,6 +874,24 @@
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()
diff --git a/src/version.c b/src/version.c
index 3788596..289d0e6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -732,6 +732,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 238,
+/**/
237,
/**/
236,