diff --git a/src/ex_getln.c b/src/ex_getln.c
index 60a8a0c..bc193a2 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -397,7 +397,8 @@
     // NOTE: must call restore_last_search_pattern() before returning!
     save_last_search_pattern();
 
-    if (!do_incsearch_highlighting(firstc, &search_delim, is_state, &skiplen, &patlen))
+    if (!do_incsearch_highlighting(firstc, &search_delim, is_state,
+							    &skiplen, &patlen))
     {
 	restore_last_search_pattern();
 	finish_incsearch_highlighting(FALSE, is_state, TRUE);
@@ -1235,10 +1236,10 @@
 		    if (has_mbyte)
 			j -= (*mb_head_off)(ccline.cmdbuff, ccline.cmdbuff + j);
 		    if (vim_ispathsep(ccline.cmdbuff[j])
-#ifdef BACKSLASH_IN_FILENAME
+# ifdef BACKSLASH_IN_FILENAME
 			    && vim_strchr((char_u *)" *?[{`$%#",
 				ccline.cmdbuff[j + 1]) == NULL
-#endif
+# endif
 		       )
 		    {
 			if (found)
@@ -1425,6 +1426,7 @@
 	if ((c == p_wc && !gotesc && KeyTyped) || c == p_wcm)
 	{
 	    int options = WILD_NO_BEEP;
+
 	    if (wim_flags[wim_index] & WIM_BUFLASTUSED)
 		options |= WILD_BUFLASTUSED;
 	    if (xpc.xp_numfiles > 0)   // typed p_wc at least twice
@@ -1442,8 +1444,7 @@
 		    res = nextwild(&xpc, WILD_LONGEST, options,
 							       firstc != '@');
 		else if (wim_flags[wim_index] & WIM_FULL)
-		    res = nextwild(&xpc, WILD_NEXT, options,
-							       firstc != '@');
+		    res = nextwild(&xpc, WILD_NEXT, options, firstc != '@');
 		else
 		    res = OK;	    // don't insert 'wildchar' now
 	    }
@@ -1454,11 +1455,10 @@
 		// if 'wildmode' first contains "longest", get longest
 		// common part
 		if (wim_flags[0] & WIM_LONGEST)
-		    res = nextwild(&xpc, WILD_LONGEST, options,
-							       firstc != '@');
+		    res = nextwild(&xpc, WILD_LONGEST, options, firstc != '@');
 		else
 		    res = nextwild(&xpc, WILD_EXPAND_KEEP, options,
-							       firstc != '@');
+								firstc != '@');
 
 		// if interrupted while completing, behave like it failed
 		if (got_int)
@@ -1483,7 +1483,7 @@
 			wim_index = 1;
 		    if ((wim_flags[wim_index] & WIM_LIST)
 #ifdef FEAT_WILDMENU
-			    || (p_wmnu && (wim_flags[wim_index] & WIM_FULL) != 0)
+			  || (p_wmnu && (wim_flags[wim_index] & WIM_FULL) != 0)
 #endif
 			    )
 		    {
@@ -1511,8 +1511,7 @@
 			    nextwild(&xpc, WILD_LONGEST, options,
 							       firstc != '@');
 			else if (wim_flags[wim_index] & WIM_FULL)
-			    nextwild(&xpc, WILD_NEXT, options,
-							       firstc != '@');
+			    nextwild(&xpc, WILD_NEXT, options, firstc != '@');
 		    }
 		    else
 			vim_beep(BO_WILD);
@@ -2348,7 +2347,8 @@
 	trigger_cmd_autocmd(cmdline_type, EVENT_CMDLINECHANGED);
 
 #ifdef FEAT_SEARCH_EXTRA
-	may_do_incsearch_highlighting(firstc, count, &is_state);
+	if (xpc.xp_context == EXPAND_NOTHING)
+	    may_do_incsearch_highlighting(firstc, count, &is_state);
 #endif
 
 #ifdef FEAT_RIGHTLEFT
diff --git a/src/testdir/dumps/Test_wildmenu_1.dump b/src/testdir/dumps/Test_wildmenu_1.dump
new file mode 100644
index 0000000..a118969
--- /dev/null
+++ b/src/testdir/dumps/Test_wildmenu_1.dump
@@ -0,0 +1,8 @@
+| +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|v+0#0000001#ffff4012|i|m|9|s|c|r|i|p|t| +3#0000000#ffffff0@1|v|i|m|g|r|e|p| @1|v|i|m|g|r|e|p|a|d@1| @43
+|:+0&&|v|i|m|9|s|c|r|i|p|t> @63
diff --git a/src/testdir/dumps/Test_wildmenu_2.dump b/src/testdir/dumps/Test_wildmenu_2.dump
new file mode 100644
index 0000000..46b41ae
--- /dev/null
+++ b/src/testdir/dumps/Test_wildmenu_2.dump
@@ -0,0 +1,8 @@
+| +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|v+3#0000000&|i|m|9|s|c|r|i|p|t| @1|v+0#0000001#ffff4012|i|m|g|r|e|p| +3#0000000#ffffff0@1|v|i|m|g|r|e|p|a|d@1| @43
+|:+0&&|v|i|m|g|r|e|p> @66
diff --git a/src/testdir/dumps/Test_wildmenu_3.dump b/src/testdir/dumps/Test_wildmenu_3.dump
new file mode 100644
index 0000000..4474936
--- /dev/null
+++ b/src/testdir/dumps/Test_wildmenu_3.dump
@@ -0,0 +1,8 @@
+| +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|v+3#0000000&|i|m|9|s|c|r|i|p|t| @1|v|i|m|g|r|e|p| @1|v+0#0000001#ffff4012|i|m|g|r|e|p|a|d@1| +3#0000000#ffffff0@43
+|:+0&&|v|i|m|g|r|e|p|a|d@1> @63
diff --git a/src/testdir/dumps/Test_wildmenu_4.dump b/src/testdir/dumps/Test_wildmenu_4.dump
new file mode 100644
index 0000000..3703fd5
--- /dev/null
+++ b/src/testdir/dumps/Test_wildmenu_4.dump
@@ -0,0 +1,8 @@
+| +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|v+3#0000000&|i|m|9|s|c|r|i|p|t| @1|v|i|m|g|r|e|p| @1|v|i|m|g|r|e|p|a|d@1| @43
+|:+0&&|v|i|m> @70
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index 266513e..6ebfa31 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -84,6 +84,34 @@
   call delete('Xdir1', 'd')
   set nowildmenu
 endfunc
+f
+func Test_wildmenu_screendump()
+  CheckScreendump
+
+  let lines =<< trim [SCRIPT]
+    set wildmenu hlsearch
+  [SCRIPT]
+  call writefile(lines, 'XTest_wildmenu')
+
+  let buf = RunVimInTerminal('-S XTest_wildmenu', {'rows': 8})
+  call term_sendkeys(buf, ":vim\<Tab>")
+  call VerifyScreenDump(buf, 'Test_wildmenu_1', {})
+
+  call term_sendkeys(buf, "\<Tab>")
+  call VerifyScreenDump(buf, 'Test_wildmenu_2', {})
+
+  call term_sendkeys(buf, "\<Tab>")
+  call VerifyScreenDump(buf, 'Test_wildmenu_3', {})
+
+  call term_sendkeys(buf, "\<Tab>")
+  call VerifyScreenDump(buf, 'Test_wildmenu_4', {})
+  call term_sendkeys(buf, "\<Esc>")
+
+  " clean up
+  call StopVimInTerminal(buf)
+  call delete('XTest_wildmenu')
+endfunc
+
 
 func Test_map_completion()
   CheckFeature cmdline_compl
diff --git a/src/version.c b/src/version.c
index f9198c7..8d20b46 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1580,
+/**/
     1579,
 /**/
     1578,
