0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

patch 8.2.4382: a custom 'tabline' may cause Esc to work like Enter

Problem:    A custom 'tabline' may cause Esc to work like Enter on the
            command line when the popup menu is displayed.
Solution:   Save and restore KeyTyped. (closes #9776)
This commit is contained in:
Bram Moolenaar
2022-02-14 19:17:53 +00:00
parent 0e76714e90
commit e4835bf340
5 changed files with 31 additions and 4 deletions

View File

@@ -571,7 +571,6 @@ redraw_custom_statusline(win_T *wp)
{
static int entered = FALSE;
int saved_did_emsg = did_emsg;
int saved_KeyTyped = KeyTyped;
// When called recursively return. This can happen when the statusline
// contains an expression that triggers a redraw.
@@ -592,9 +591,6 @@ redraw_custom_statusline(win_T *wp)
}
did_emsg |= saved_did_emsg;
entered = FALSE;
// A user function may reset KeyTyped, restore it.
KeyTyped = saved_KeyTyped;
}
#endif

View File

@@ -1235,6 +1235,7 @@ win_redr_custom(
int use_sandbox = FALSE;
win_T *ewp;
int p_crb_save;
int save_KeyTyped = KeyTyped;
// There is a tiny chance that this gets called recursively: When
// redrawing a status line triggers redrawing the ruler or tabline.
@@ -1394,6 +1395,9 @@ win_redr_custom(
theend:
entered = FALSE;
// A user function may reset KeyTyped, restore it.
KeyTyped = save_KeyTyped;
}
#endif // FEAT_STL_OPT

View File

@@ -0,0 +1,10 @@
|m+1&#ffffff0|y| |t|a|b| |l|i|n|e| @63
> +0&&@74
|~+0#4040ff13&| @73
|~| @73
|~| @73
|~| @73
|~| @73
|~| @73
|b+3#0000000&|a|r| @71
| +0&&@74

View File

@@ -2107,6 +2107,15 @@ func Test_wildmenu_pum()
set statusline=%!MyStatusLine()
set laststatus=2
endfunc
func MyTabLine()
return 'my tab line'
endfunc
func SetupTabline()
set statusline=
set tabline=%!MyTabLine()
set showtabline=2
endfunc
[CODE]
call writefile(commands, 'Xtest')
@@ -2298,6 +2307,12 @@ func Test_wildmenu_pum()
call term_sendkeys(buf, "\<Esc>")
call VerifyScreenDump(buf, 'Test_wildmenu_pum_39', {})
" Esc still works to abort the command when 'tabline' is set
call term_sendkeys(buf, ":call SetupTabline()\<CR>")
call term_sendkeys(buf, ":si\<Tab>")
call term_sendkeys(buf, "\<Esc>")
call VerifyScreenDump(buf, 'Test_wildmenu_pum_40', {})
call term_sendkeys(buf, "\<C-U>\<CR>")
call StopVimInTerminal(buf)
call delete('Xtest')

View File

@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
4382,
/**/
4381,
/**/