updated for version 7.2-223
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 47c460c..627e5f8 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -1677,8 +1677,8 @@
char_u *errormsg = NULL; /* error message */
exarg_T ea; /* Ex command arguments */
long verbose_save = -1;
- int save_msg_scroll = 0;
- int did_silent = 0;
+ int save_msg_scroll = msg_scroll;
+ int save_msg_silent = -1;
int did_esilent = 0;
#ifdef HAVE_SANDBOX
int did_sandbox = FALSE;
@@ -1856,9 +1856,9 @@
}
if (!checkforcmd(&ea.cmd, "silent", 3))
break;
- ++did_silent;
+ if (save_msg_silent == -1)
+ save_msg_silent = msg_silent;
++msg_silent;
- save_msg_scroll = msg_scroll;
if (*ea.cmd == '!' && !vim_iswhite(ea.cmd[-1]))
{
/* ":silent!", but not "silent !cmd" */
@@ -1886,6 +1886,13 @@
#endif
continue;
+ case 'u': if (!checkforcmd(&ea.cmd, "unsilent", 3))
+ break;
+ if (save_msg_silent == -1)
+ save_msg_silent = msg_silent;
+ msg_silent = 0;
+ continue;
+
case 'v': if (checkforcmd(&ea.cmd, "vertical", 4))
{
#ifdef FEAT_VERTSPLIT
@@ -2684,13 +2691,12 @@
cmdmod = save_cmdmod;
- if (did_silent > 0)
+ if (save_msg_silent != -1)
{
/* messages could be enabled for a serious error, need to check if the
* counters don't become negative */
- msg_silent -= did_silent;
- if (msg_silent < 0)
- msg_silent = 0;
+ if (!did_emsg)
+ msg_silent = save_msg_silent;
emsg_silent -= did_esilent;
if (emsg_silent < 0)
emsg_silent = 0;
@@ -2987,6 +2993,7 @@
{"silent", 3, FALSE},
{"tab", 3, TRUE},
{"topleft", 2, FALSE},
+ {"unsilent", 3, FALSE},
{"verbose", 4, TRUE},
{"vertical", 4, FALSE},
};