summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-06-18 17:28:39 +0200
committerBram Moolenaar <Bram@vim.org>2020-06-18 17:28:39 +0200
commit158ea175a99fc23eae1b0a5ee9a81cdd973854a6 (patch)
tree85750aa423cd26647ae403bbf540b9ae7a74067a
parent2f03e5a0a9cfaabb01c57dd3348a05e86c26623c (diff)
downloadvim-git-158ea175a99fc23eae1b0a5ee9a81cdd973854a6.tar.gz
patch 8.2.1000: get error when leaving Ex mode with :visualv8.2.1000
Problem: Get error when leaving Ex mode with :visual and a CmdLineEnter autocommand was used. Solution: Reset ex_pressedreturn. (closes #6293)
-rw-r--r--src/ex_docmd.c3
-rw-r--r--src/testdir/test_ex_mode.vim11
-rw-r--r--src/version.c2
3 files changed, 15 insertions, 1 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 3a1a61491..93f33ae42 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -1895,7 +1895,7 @@ do_one_cmd(
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 @@ do_exedit(
|| 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 d23e0ad93..32c65448f 100644
--- a/src/testdir/test_ex_mode.vim
+++ b/src/testdir/test_ex_mode.vim
@@ -166,6 +166,17 @@ func Test_ex_mode_errors()
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 f1cc22f5e..5f4ff7172 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1000,
+/**/
999,
/**/
998,