changeset 32667:9e28090dd246 v9.0.1665

patch 9.0.1665: empty CmdlineEnter autocommand causes errors in Ex mode Commit: https://github.com/vim/vim/commit/590aae35575cbd74d80c41d87fc647f2812aad70 Author: Christian Brabandt <cb@256bit.org> Date: Sun Jun 25 22:34:22 2023 +0100 patch 9.0.1665: empty CmdlineEnter autocommand causes errors in Ex mode Problem: Empty CmdlineEnter autocommand causes errors in Ex mode. Solution: Save and restore ex_pressedreturn. (Christian Brabandt, closes # 12581, closes #12578)
author Bram Moolenaar <Bram@vim.org>
date Sun, 25 Jun 2023 23:45:07 +0200
parents f905f7bc568c
children d110c049e688
files src/autocmd.c src/ex_docmd.c src/testdir/test_ex_mode.vim src/version.c
diffstat 4 files changed, 11 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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
--- 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
 
--- 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,