aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/ex_docmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/ex_docmd.c')
-rw-r--r--src/nvim/ex_docmd.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c
index ec4b16fbb0..7a7b20c35f 100644
--- a/src/nvim/ex_docmd.c
+++ b/src/nvim/ex_docmd.c
@@ -2217,11 +2217,19 @@ static char_u * do_one_cmd(char_u **cmdlinep,
ea.arg = skipwhite(p);
}
- /*
- * 7. Switch on command name.
- *
- * The "ea" structure holds the arguments that can be used.
- */
+ // 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. Execute the command.
+ //
+ // The "ea" structure holds the arguments that can be used.
ea.cmdlinep = cmdlinep;
ea.getline = fgetline;
ea.cookie = cookie;