patch 8.2.1000: get error when leaving Ex mode with :visual
Problem: Get error when leaving Ex mode with :visual and a CmdLineEnter
autocommand was used.
Solution: Reset ex_pressedreturn. (closes #6293)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 3a1a614..93f33ae 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -1895,7 +1895,7 @@
p = ea.cmd;
while (ASCII_ISALNUM(*p))
++p;
- p = vim_strnsave(ea.cmd, (int)(p - ea.cmd));
+ p = vim_strnsave(ea.cmd, p - ea.cmd);
ret = apply_autocmds(EVENT_CMDUNDEFINED, p, p, TRUE, NULL);
vim_free(p);
// If the autocommands did something and didn't cause an error, try
@@ -6215,6 +6215,7 @@
|| eap->cmdidx == CMD_view))
{
exmode_active = FALSE;
+ ex_pressedreturn = FALSE;
if (*eap->arg == NUL)
{
// Special case: ":global/pat/visual\NLvi-commands"
diff --git a/src/testdir/test_ex_mode.vim b/src/testdir/test_ex_mode.vim
index d23e0ad..32c6544 100644
--- a/src/testdir/test_ex_mode.vim
+++ b/src/testdir/test_ex_mode.vim
@@ -166,6 +166,17 @@
endtry
call assert_equal(1, caught_e565)
au! InsertCharPre
+
+ new
+ au CmdLineEnter * call ExEnterFunc()
+ func ExEnterFunc()
+
+ endfunc
+ call feedkeys("gQvi\r", 'xt')
+
+ au! CmdLineEnter
+ delfunc ExEnterFunc
+ quit
endfunc
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index f1cc22f..5f4ff71 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1000,
+/**/
999,
/**/
998,