forked from aniani/vim
patch 8.2.4738: Esc on commandline executes command instead of abandoning it
Problem: Esc on commandline executes command instead of abandoning it. Solution: Save and restore KeyTyped when removing the popup menu. (closes #10154)
This commit is contained in:
parent
1655619717
commit
11a57dfd16
@ -378,6 +378,7 @@ int cmdline_pum_active(void)
|
|||||||
void cmdline_pum_remove(void)
|
void cmdline_pum_remove(void)
|
||||||
{
|
{
|
||||||
int save_p_lz = p_lz;
|
int save_p_lz = p_lz;
|
||||||
|
int save_KeyTyped = KeyTyped;
|
||||||
|
|
||||||
pum_undisplay();
|
pum_undisplay();
|
||||||
VIM_CLEAR(compl_match_array);
|
VIM_CLEAR(compl_match_array);
|
||||||
@ -385,6 +386,10 @@ void cmdline_pum_remove(void)
|
|||||||
update_screen(0);
|
update_screen(0);
|
||||||
p_lz = save_p_lz;
|
p_lz = save_p_lz;
|
||||||
redrawcmd();
|
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)
|
void cmdline_pum_cleanup(cmdline_info_T *cclp)
|
||||||
|
10
src/testdir/dumps/Test_wildmenu_with_pum_foldexpr_1.dump
Normal file
10
src/testdir/dumps/Test_wildmenu_with_pum_foldexpr_1.dump
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
|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
|
10
src/testdir/dumps/Test_wildmenu_with_pum_foldexpr_2.dump
Normal file
10
src/testdir/dumps/Test_wildmenu_with_pum_foldexpr_2.dump
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
>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|
|
@ -2510,6 +2510,29 @@ func Test_wildmenumode_with_pum()
|
|||||||
cunmap <F2>
|
cunmap <F2>
|
||||||
endfunc
|
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.
|
" 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
|
" The popup menu should be positioned correctly over the status line of the
|
||||||
" bottom-most window.
|
" bottom-most window.
|
||||||
|
@ -746,6 +746,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
4738,
|
||||||
/**/
|
/**/
|
||||||
4737,
|
4737,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user