From 57f799e6a4a56f41570c752c66dc2f692b1f2c2f Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 12 Dec 2020 20:42:19 +0100 Subject: [PATCH] patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function Problem: Vim9: get E1099 when autocmd triggered in builtin function. Solution: Check that did_emsg increased instead of checking that it changed. (closes #7448) --- src/testdir/test_vim9_func.vim | 20 ++++++++++++++++++++ src/version.c | 2 ++ src/vim9execute.c | 2 +- 3 files changed, 23 insertions(+), 1 deletion(-) 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 call Func() + feedkeys("\\e", 'xt') + END + writefile(lines, 'XemsgReset') + assert_fails('so XemsgReset', ['E684:', 'E684:'], lines, 2) + delete('XemsgReset') + nunmap + 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 @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2134, /**/ 2133, /**/ 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; }