summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Brabandt <cb@256bit.org>2023-06-25 22:34:22 +0100
committerBram Moolenaar <Bram@vim.org>2023-06-25 22:34:22 +0100
commit590aae35575cbd74d80c41d87fc647f2812aad70 (patch)
tree8efb27054cdf67fcffb5bd5943fa8df0c6ea44a1
parent8154e642aa476e1a5d3de66c34e8289845b2b797 (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.c5
-rw-r--r--src/ex_docmd.c2
-rw-r--r--src/testdir/test_ex_mode.vim6
-rw-r--r--src/version.c2
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,