diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-12-12 20:42:19 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-12-12 20:42:19 +0100 |
commit | 57f799e6a4a56f41570c752c66dc2f692b1f2c2f (patch) | |
tree | 95157c4dd7fa50b6aac5876baad4c88a54cc4737 | |
parent | 2a9d5d386bea8455b37c1accebc45683ec51d6fb (diff) | |
download | vim-git-57f799e6a4a56f41570c752c66dc2f692b1f2c2f.tar.gz |
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin functionv8.2.2134
Problem: Vim9: get E1099 when autocmd triggered in builtin function.
Solution: Check that did_emsg increased instead of checking that it changed.
(closes #7448)
-rw-r--r-- | src/testdir/test_vim9_func.vim | 20 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9execute.c | 2 |
3 files changed, 23 insertions, 1 deletions
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index db7da5e14..0a07e8de8 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -1824,6 +1824,26 @@ def Test_reset_did_emsg() delfunc! g:Func enddef +def Test_did_emsg_reset() + # executing an autocommand resets did_emsg, this should not result in a + # builtin function considered failing + var lines =<< trim END + vim9script + au BufWinLeave * # + def Func() + popup_menu('', {callback: {-> popup_create('', {})->popup_close()}}) + eval [][0] + enddef + nno <F3> <cmd>call <sid>Func()<cr> + feedkeys("\<F3>\e", 'xt') + END + writefile(lines, 'XemsgReset') + assert_fails('so XemsgReset', ['E684:', 'E684:'], lines, 2) + delete('XemsgReset') + nunmap <F3> + au! BufWinLeave +enddef + def Test_abort_with_silent_call() var lines =<< trim END vim9script diff --git a/src/version.c b/src/version.c index 6b0ec417e..f4211effa 100644 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2134, +/**/ 2133, /**/ 2132, diff --git a/src/vim9execute.c b/src/vim9execute.c index 3f61cb445..351ea8b3b 100644 --- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -583,7 +583,7 @@ call_bfunc(int func_idx, int argcount, ectx_T *ectx) for (idx = 0; idx < argcount; ++idx) clear_tv(&argvars[idx]); - if (did_emsg != did_emsg_before) + if (did_emsg > did_emsg_before) return FAIL; return OK; } |