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,