0
0
mirror of https://github.com/vim/vim.git synced 2025-09-27 04:14:06 -04:00

patch 8.0.1518: error messages suppressed after ":silent! try"

Problem:    Error messages suppressed after ":silent! try". (Ben Reilly)
Solution:   Restore emsg_silent before executing :try. (closes #2531)
This commit is contained in:
Bram Moolenaar
2018-02-13 18:05:18 +01:00
parent bc197195b0
commit 2be5733152
3 changed files with 27 additions and 1 deletions

View File

@@ -2880,8 +2880,18 @@ do_one_cmd(
} }
#endif #endif
/* The :try command saves the emsg_silent flag, reset it here when
* ":silent! try" was used, it should only apply to :try itself. */
if (ea.cmdidx == CMD_try && did_esilent > 0)
{
emsg_silent -= did_esilent;
if (emsg_silent < 0)
emsg_silent = 0;
did_esilent = 0;
}
/* /*
* 7. Switch on command name. * 7. Execute the command.
* *
* The "ea" structure holds the arguments that can be used. * The "ea" structure holds the arguments that can be used.
*/ */

View File

@@ -11,3 +11,17 @@ endfunction
func Test_catch_return_with_error() func Test_catch_return_with_error()
call assert_equal(1, s:foo()) call assert_equal(1, s:foo())
endfunc endfunc
func Test_nocatch_restore_silent_emsg()
silent! try
throw 1
catch
endtry
echoerr 'wrong'
let c1 = nr2char(screenchar(&lines, 1))
let c2 = nr2char(screenchar(&lines, 2))
let c3 = nr2char(screenchar(&lines, 3))
let c4 = nr2char(screenchar(&lines, 4))
let c5 = nr2char(screenchar(&lines, 5))
call assert_equal('wrong', c1 . c2 . c3 . c4 . c5)
endfunc

View File

@@ -771,6 +771,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1518,
/**/ /**/
1517, 1517,
/**/ /**/