To: vim-dev@vim.org Subject: Patch 7.2.223 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.2.223 Problem: When a script is run with ":silent" it is not able to give warning messages. Solution: Add the ":unsilent" command. Files: runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c *** ../vim-7.2.222/runtime/doc/various.txt 2008-08-09 19:36:54.000000000 +0200 --- runtime/doc/various.txt 2009-07-09 15:52:54.000000000 +0200 *************** *** 508,513 **** --- 508,524 ---- messages though. Use ":silent" in the command itself to avoid that: ":silent menu .... :silent command". + *:uns* *:unsilent* + :uns[ilent] {command} Execute {command} not silently. Only makes a + difference when |:silent| was used to get to this + command. + Use this for giving a message even when |:silent| was + used. In this example |:silent| is used to avoid the + message about reading the file and |:unsilent| to be + able to list the first line of each file. > + :silent argdo unsilent echo expand('%') . ": " . getline(1) + < + *:verb* *:verbose* :[count]verb[ose] {command} Execute {command} with 'verbose' set to [count]. If *** ../vim-7.2.222/src/ex_cmds.h 2008-11-09 13:43:25.000000000 +0100 --- src/ex_cmds.h 2009-07-01 18:12:55.000000000 +0200 *************** *** 991,996 **** --- 991,998 ---- BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), EX(CMD_unmenu, "unmenu", ex_menu, BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_unsilent, "unsilent", ex_wrongmodifier, + NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN), EX(CMD_update, "update", ex_update, RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR), EX(CMD_vglobal, "vglobal", ex_global, *** ../vim-7.2.222/src/ex_docmd.c 2009-07-01 20:18:43.000000000 +0200 --- src/ex_docmd.c 2009-07-09 15:24:03.000000000 +0200 *************** *** 1677,1684 **** 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 did_esilent = 0; #ifdef HAVE_SANDBOX int did_sandbox = FALSE; --- 1677,1684 ---- char_u *errormsg = NULL; /* error message */ exarg_T ea; /* Ex command arguments */ long verbose_save = -1; ! int save_msg_scroll = msg_scroll; ! int save_msg_silent = -1; int did_esilent = 0; #ifdef HAVE_SANDBOX int did_sandbox = FALSE; *************** *** 1856,1864 **** } if (!checkforcmd(&ea.cmd, "silent", 3)) break; ! ++did_silent; ++msg_silent; - save_msg_scroll = msg_scroll; if (*ea.cmd == '!' && !vim_iswhite(ea.cmd[-1])) { /* ":silent!", but not "silent !cmd" */ --- 1856,1864 ---- } if (!checkforcmd(&ea.cmd, "silent", 3)) break; ! if (save_msg_silent == -1) ! save_msg_silent = msg_silent; ++msg_silent; if (*ea.cmd == '!' && !vim_iswhite(ea.cmd[-1])) { /* ":silent!", but not "silent !cmd" */ *************** *** 1886,1891 **** --- 1886,1898 ---- #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,2696 **** cmdmod = save_cmdmod; ! if (did_silent > 0) { /* 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; emsg_silent -= did_esilent; if (emsg_silent < 0) emsg_silent = 0; --- 2691,2702 ---- cmdmod = save_cmdmod; ! if (save_msg_silent != -1) { /* messages could be enabled for a serious error, need to check if the * counters don't become negative */ ! if (!did_emsg) ! msg_silent = save_msg_silent; emsg_silent -= did_esilent; if (emsg_silent < 0) emsg_silent = 0; *************** *** 2987,2992 **** --- 2993,2999 ---- {"silent", 3, FALSE}, {"tab", 3, TRUE}, {"topleft", 2, FALSE}, + {"unsilent", 3, FALSE}, {"verbose", 4, TRUE}, {"vertical", 4, FALSE}, }; *** ../vim-7.2.222/src/version.c 2009-07-01 20:18:43.000000000 +0200 --- src/version.c 2009-07-09 15:53:05.000000000 +0200 *************** *** 678,679 **** --- 678,681 ---- { /* Add new patch number below this line */ + /**/ + 223, /**/ -- Q: How many legs does a giraffe have? A: Eight: two in front, two behind, two on the left and two on the right /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ download, build and distribute -- http://www.A-A-P.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///