diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-02-11 18:51:45 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-02-11 18:51:45 +0000 |
commit | 481acb11413a436653e235d2098990b2ad47d195 (patch) | |
tree | e2012f19845ed8251e04528df52aa39b5e7a59d6 | |
parent | f6246f51e3d85a982a899b4a8fd9045a5e23016f (diff) | |
download | vim-git-481acb11413a436653e235d2098990b2ad47d195.tar.gz |
patch 8.2.4346: a custom statusline may cause Esc to work like Enterv8.2.4346
Problem: A custom statusline may cause Esc to work like Enter on the
command line when the popup menu is displayed.
Solution: Save and restore KeyTyped. (closes #9749)
-rw-r--r-- | src/drawscreen.c | 4 | ||||
-rw-r--r-- | src/testdir/dumps/Test_wildmenu_pum_39.dump | 10 | ||||
-rw-r--r-- | src/testdir/test_cmdline.vim | 15 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 31 insertions, 0 deletions
diff --git a/src/drawscreen.c b/src/drawscreen.c index 6cae313fa..69f44a9f9 100644 --- a/src/drawscreen.c +++ b/src/drawscreen.c @@ -571,6 +571,7 @@ 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. @@ -591,6 +592,9 @@ 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 diff --git a/src/testdir/dumps/Test_wildmenu_pum_39.dump b/src/testdir/dumps/Test_wildmenu_pum_39.dump new file mode 100644 index 000000000..27be763ee --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_39.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|s+3#0000000&|t|a|t|u|s| @68 +| +0&&@74 diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index 1beb9af4b..6d0dc5bef 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -1983,6 +1983,14 @@ func Test_wildmenu_pum() return repeat(['aaaa'], 120) endfunc command -nargs=* -complete=customlist,CmdCompl Tcmd + + func MyStatusLine() abort + return 'status' + endfunc + func SetupStatusline() + set statusline=%!MyStatusLine() + set laststatus=2 + endfunc [CODE] call writefile(commands, 'Xtest') @@ -2166,6 +2174,13 @@ func Test_wildmenu_pum() call term_sendkeys(buf, ":ls\<CR>") call term_sendkeys(buf, ":com\<Tab> ") call VerifyScreenDump(buf, 'Test_wildmenu_pum_38', {}) + call term_sendkeys(buf, "\<C-U>\<CR>") + + " Esc still works to abort the command when 'statusline' is set + call term_sendkeys(buf, ":call SetupStatusline()\<CR>") + call term_sendkeys(buf, ":si\<Tab>") + call term_sendkeys(buf, "\<Esc>") + call VerifyScreenDump(buf, 'Test_wildmenu_pum_39', {}) call term_sendkeys(buf, "\<C-U>\<CR>") call StopVimInTerminal(buf) diff --git a/src/version.c b/src/version.c index b70fb291a..07e46ae95 100644 --- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4346, +/**/ 4345, /**/ 4344, |