mirror of
https://github.com/vim/vim
synced 2025-07-16 09:12:00 +00:00
patch 9.1.0529: silent! causes following try/catch to not work
Problem: silent! causes following try/catch to not work (Malcolm Rowe) Solution: consider emsg_silent in handle_did_throw() and do not abort evaluation flow for :silent! (LemonBoy) The silent! flag causes the evaluation not to be aborted in case of uncaught exceptions, adjust handle_did_throw to take this detail into account. Fixes the long-standing todo.txt item: ``` Problem that a previous silent ":throw" causes a following try/catch not to work. (ZyX, 2013 Sep 28) With examples: (Malcolm Rowe, 2015 Dec 24) Also see #8487 for an example. ``` fixes: #538 closes: #15128 Signed-off-by: LemonBoy <thatlemon@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
11d5992573
commit
749ba0f6d9
@ -1460,8 +1460,13 @@ handle_did_throw(void)
|
||||
current_exception->throw_name = NULL;
|
||||
|
||||
discard_current_exception(); // uses IObuff if 'verbose'
|
||||
suppress_errthrow = TRUE;
|
||||
force_abort = TRUE;
|
||||
|
||||
// If "silent!" is active the uncaught exception is not fatal.
|
||||
if (emsg_silent == 0)
|
||||
{
|
||||
suppress_errthrow = TRUE;
|
||||
force_abort = TRUE;
|
||||
}
|
||||
|
||||
if (messages != NULL)
|
||||
{
|
||||
|
Reference in New Issue
Block a user