void cmdline_pum_remove(void)
{
int save_p_lz = p_lz;
+ int save_KeyTyped = KeyTyped;
pum_undisplay();
VIM_CLEAR(compl_match_array);
update_screen(0);
p_lz = save_p_lz;
redrawcmd();
+
+ // When a function is called (e.g. for 'foldtext') KeyTyped might be reset
+ // as a side effect.
+ KeyTyped = save_KeyTyped;
}
void cmdline_pum_cleanup(cmdline_info_T *cclp)
--- /dev/null
+|f+0#0000e05#a8a8a8255|o@1|-@71
+|s+0#0000000#ffffff0|o|m|e| |m|o|r|e| |t|e|x|t| @60
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+| +0#0000001#e0e0e08|s|e|t| @11| +0#4040ff13#ffffff0@58
+| +0#0000001#ffd7ff255|s|e|t|f|i|l|e|t|y|p|e| @3| +0#4040ff13#ffffff0@58
+| +0#0000001#ffd7ff255|s|e|t|g|l|o|b|a|l| @5| +0#4040ff13#ffffff0@58
+| +0#0000001#ffd7ff255|s|e|t|l|o|c|a|l| @6| +0#4040ff13#ffffff0@58
+|:+0#0000000&|s|e|t> @70
--- /dev/null
+>f+0#0000e05#a8a8a8255|o@1|-@71
+|s+0#0000000#ffffff0|o|m|e| |m|o|r|e| |t|e|x|t| @60
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|,|1| @10|A|l@1|
cunmap <F2>
endfunc
+func Test_wildmenu_with_pum_foldexpr()
+ CheckRunVimInTerminal
+
+ let lines =<< trim END
+ call setline(1, ['folded one', 'folded two', 'some more text'])
+ func MyFoldText()
+ return 'foo'
+ endfunc
+ set foldtext=MyFoldText() wildoptions=pum
+ normal ggzfj
+ END
+ call writefile(lines, 'Xpumfold')
+ let buf = RunVimInTerminal('-S Xpumfold', #{rows: 10})
+ call term_sendkeys(buf, ":set\<Tab>")
+ call VerifyScreenDump(buf, 'Test_wildmenu_with_pum_foldexpr_1', {})
+
+ call term_sendkeys(buf, "\<Esc>")
+ call VerifyScreenDump(buf, 'Test_wildmenu_with_pum_foldexpr_2', {})
+
+ call StopVimInTerminal(buf)
+ call delete('Xpumfold')
+endfunc
+
" Test for opening the cmdline completion popup menu from the terminal window.
" The popup menu should be positioned correctly over the status line of the
" bottom-most window.