diff options
author | Christian Brabandt <cb@256bit.org> | 2023-06-25 22:34:22 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2023-06-25 22:34:22 +0100 |
commit | 590aae35575cbd74d80c41d87fc647f2812aad70 (patch) | |
tree | 8efb27054cdf67fcffb5bd5943fa8df0c6ea44a1 | |
parent | 8154e642aa476e1a5d3de66c34e8289845b2b797 (diff) |
patch 9.0.1665: empty CmdlineEnter autocommand causes errors in Ex modev9.0.1665
Problem: Empty CmdlineEnter autocommand causes errors in Ex mode.
Solution: Save and restore ex_pressedreturn. (Christian Brabandt,
closes # 12581, closes #12578)
-rw-r--r-- | src/autocmd.c | 5 | ||||
-rw-r--r-- | src/ex_docmd.c | 2 | ||||
-rw-r--r-- | src/testdir/test_ex_mode.vim | 6 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 11 insertions, 4 deletions
diff --git a/src/autocmd.c b/src/autocmd.c index 862ddf7ccc..63e56735b5 100644 --- a/src/autocmd.c +++ b/src/autocmd.c @@ -2018,7 +2018,6 @@ apply_autocmds_group( int did_save_redobuff = FALSE; save_redo_T save_redo; int save_KeyTyped = KeyTyped; - int save_did_emsg; ESTACK_CHECK_DECLARATION; /* @@ -2310,12 +2309,14 @@ apply_autocmds_group( else check_lnums_nested(TRUE); - save_did_emsg = did_emsg; + int save_did_emsg = did_emsg; + int save_ex_pressedreturn = get_pressedreturn(); do_cmdline(NULL, getnextac, (void *)&patcmd, DOCMD_NOWAIT|DOCMD_VERBOSE|DOCMD_REPEAT); did_emsg += save_did_emsg; + set_pressedreturn(save_ex_pressedreturn); if (nesting == 1) // restore cursor and topline, unless they were changed diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 959331a022..8fda332688 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -9840,7 +9840,6 @@ is_loclist_cmd(int cmdidx) } #endif -#if defined(FEAT_TIMERS) || defined(PROTO) int get_pressedreturn(void) { @@ -9852,4 +9851,3 @@ set_pressedreturn(int val) { ex_pressedreturn = val; } -#endif diff --git a/src/testdir/test_ex_mode.vim b/src/testdir/test_ex_mode.vim index d03ec8f2d8..59c28f3836 100644 --- a/src/testdir/test_ex_mode.vim +++ b/src/testdir/test_ex_mode.vim @@ -239,6 +239,12 @@ func Test_ex_mode_errors() au! CmdLineEnter delfunc ExEnterFunc + + au CmdlineEnter * : + call feedkeys("gQecho 1\r", 'xt') + + au! CmdlineEnter + quit endfunc diff --git a/src/version.c b/src/version.c index 894b47d419..9c451aef7a 100644 --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1665, +/**/ 1664, /**/ 1663, |