# HG changeset patch # User Bram Moolenaar # Date 1592494203 -7200 # Node ID 213fb059e02e8dd83829f1a1657daa21d2c068ef # Parent 9df2164fcd198d9a648751fe78a380f6da7d31d5 patch 8.2.1000: get error when leaving Ex mode with :visual Commit: https://github.com/vim/vim/commit/158ea175a99fc23eae1b0a5ee9a81cdd973854a6 Author: Bram Moolenaar Date: Thu Jun 18 17:28:39 2020 +0200 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 --- 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 --- 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 --- 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,