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:
@@ -571,7 +571,6 @@ redraw_custom_statusline(win_T *wp)
|
|||||||
{
|
{
|
||||||
static int entered = FALSE;
|
static int entered = FALSE;
|
||||||
int saved_did_emsg = did_emsg;
|
int saved_did_emsg = did_emsg;
|
||||||
int saved_KeyTyped = KeyTyped;
|
|
||||||
|
|
||||||
// When called recursively return. This can happen when the statusline
|
// When called recursively return. This can happen when the statusline
|
||||||
// contains an expression that triggers a redraw.
|
// contains an expression that triggers a redraw.
|
||||||
@@ -592,9 +591,6 @@ redraw_custom_statusline(win_T *wp)
|
|||||||
}
|
}
|
||||||
did_emsg |= saved_did_emsg;
|
did_emsg |= saved_did_emsg;
|
||||||
entered = FALSE;
|
entered = FALSE;
|
||||||
|
|
||||||
// A user function may reset KeyTyped, restore it.
|
|
||||||
KeyTyped = saved_KeyTyped;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -1235,6 +1235,7 @@ win_redr_custom(
|
|||||||
int use_sandbox = FALSE;
|
int use_sandbox = FALSE;
|
||||||
win_T *ewp;
|
win_T *ewp;
|
||||||
int p_crb_save;
|
int p_crb_save;
|
||||||
|
int save_KeyTyped = KeyTyped;
|
||||||
|
|
||||||
// There is a tiny chance that this gets called recursively: When
|
// There is a tiny chance that this gets called recursively: When
|
||||||
// redrawing a status line triggers redrawing the ruler or tabline.
|
// redrawing a status line triggers redrawing the ruler or tabline.
|
||||||
@@ -1394,6 +1395,9 @@ win_redr_custom(
|
|||||||
|
|
||||||
theend:
|
theend:
|
||||||
entered = FALSE;
|
entered = FALSE;
|
||||||
|
|
||||||
|
// A user function may reset KeyTyped, restore it.
|
||||||
|
KeyTyped = save_KeyTyped;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // FEAT_STL_OPT
|
#endif // FEAT_STL_OPT
|
||||||
|
10
src/testdir/dumps/Test_wildmenu_pum_40.dump
Normal file
10
src/testdir/dumps/Test_wildmenu_pum_40.dump
Normal 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
|
@@ -2107,6 +2107,15 @@ func Test_wildmenu_pum()
|
|||||||
set statusline=%!MyStatusLine()
|
set statusline=%!MyStatusLine()
|
||||||
set laststatus=2
|
set laststatus=2
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func MyTabLine()
|
||||||
|
return 'my tab line'
|
||||||
|
endfunc
|
||||||
|
func SetupTabline()
|
||||||
|
set statusline=
|
||||||
|
set tabline=%!MyTabLine()
|
||||||
|
set showtabline=2
|
||||||
|
endfunc
|
||||||
[CODE]
|
[CODE]
|
||||||
call writefile(commands, 'Xtest')
|
call writefile(commands, 'Xtest')
|
||||||
|
|
||||||
@@ -2298,6 +2307,12 @@ func Test_wildmenu_pum()
|
|||||||
call term_sendkeys(buf, "\<Esc>")
|
call term_sendkeys(buf, "\<Esc>")
|
||||||
call VerifyScreenDump(buf, 'Test_wildmenu_pum_39', {})
|
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 term_sendkeys(buf, "\<C-U>\<CR>")
|
||||||
call StopVimInTerminal(buf)
|
call StopVimInTerminal(buf)
|
||||||
call delete('Xtest')
|
call delete('Xtest')
|
||||||
|
@@ -750,6 +750,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 */
|
||||||
|
/**/
|
||||||
|
4382,
|
||||||
/**/
|
/**/
|
||||||
4381,
|
4381,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user