Mercurial > vim
changeset 13600:75e35ebdb7a4 v8.0.1672
patch 8.0.1672: error during completion causes command to be cancelled
commit https://github.com/vim/vim/commit/72532d354e699f1cceec34c0b08e1de4d3ea9641
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Apr 7 19:09:09 2018 +0200
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.)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 07 Apr 2018 19:15:05 +0200 |
parents | 1212b1877959 |
children | a89db31443a2 |
files | src/ex_getln.c src/testdir/test_cmdline.vim src/version.c |
diffstat | 3 files changed, 17 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -316,6 +316,17 @@ func Test_paste_in_cmdline() call feedkeys(":\<C-\>etoupper(getline(1))\<CR>\<C-B>\"\<CR>", '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 \<C-R>%Xtestfile\<CR>", 'tx') + catch /^Vim\%((\a\+)\)\=:E32/ + " ignore error E32 + endtry + call assert_equal("Xtestfile", bufname("%")) + bwipe! endfunc func Test_remove_char_in_cmdline()