From: Bram Moolenaar Date: Sat, 7 Apr 2018 17:09:09 +0000 (+0200) Subject: patch 8.0.1672: error during completion causes command to be cancelled X-Git-Tag: v8.0.1672 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=72532d354e699f1cceec34c0b08e1de4d3ea9641;p=vim patch 8.0.1672: error during completion causes command to be cancelled Problem: Error during completion causes command to be cancelled. Solution: Reset did_emsg before waiting for another character. (Tom M.) --- diff --git a/src/ex_getln.c b/src/ex_getln.c index 48cccf18e..9fdfac5a2 100644 --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -426,6 +426,10 @@ getcmdline( #endif quit_more = FALSE; /* reset after CTRL-D which had a more-prompt */ + did_emsg = FALSE; /* There can't really be a reason why an error + that occurs while typing a command should + cause the command not to be executed. */ + cursorcmd(); /* set the cursor on the right spot */ /* Get a character. Ignore K_IGNORE and K_NOP, they should not do diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index 8755fbf1a..ff0756c39 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -316,6 +316,17 @@ func Test_paste_in_cmdline() call feedkeys(":\etoupper(getline(1))\\\"\", 'tx') call assert_equal('"ASDF.X /TMP/SOME VERYLONGWORD A;B-C*D ', @:) bwipe! + + " Error while typing a command used to cause that it was not executed + " in the end. + new + try + call feedkeys(":file \%Xtestfile\", 'tx') + catch /^Vim\%((\a\+)\)\=:E32/ + " ignore error E32 + endtry + call assert_equal("Xtestfile", bufname("%")) + bwipe! endfunc func Test_remove_char_in_cmdline() diff --git a/src/version.c b/src/version.c index 8264bd9a8..665c95391 100644 --- a/src/version.c +++ b/src/version.c @@ -762,6 +762,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1672, /**/ 1671, /**/