]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.596 v7.3.596
authorBram Moolenaar <Bram@vim.org>
Tue, 10 Jul 2012 13:18:22 +0000 (15:18 +0200)
committerBram Moolenaar <Bram@vim.org>
Tue, 10 Jul 2012 13:18:22 +0000 (15:18 +0200)
Problem:    Can't remove all signs for a file or buffer.
Solution:   Support "*" for the sign id. (Christian Brabandt)

runtime/doc/sign.txt
src/buffer.c
src/ex_cmds.c
src/proto/buffer.pro
src/version.c

index 9771fbdc73338832f35a2d1dd2ed5a0b28a273a7..cedd96e08922a89ba45aff681200e5de92d441c7 100644 (file)
@@ -153,8 +153,14 @@ REMOVING SIGNS                                             *:sign-unplace* *E159*
                Remove the previously placed sign {id} from file {fname}.
                See remark above about {fname} |:sign-fname|.
 
+:sign unplace * file={fname}
+               Remove all placed signs in file {fname}.
+
 :sign unplace {id} buffer={nr}
-               Same, but use buffer {nr}.
+               Remove the previously placed sign {id} from buffer {nr}.
+
+:sign unplace * buffer={nr}
+               Remove all placed signs in buffer {nr}.
 
 :sign unplace {id}
                Remove the previously placed sign {id} from all files it
index ba4692a5948378fa13a210006496a66e00eb15a7..d6d039f0e806e8bb038c199e639da8e1b32120ca 100644 (file)
@@ -57,7 +57,6 @@ static void   clear_wininfo __ARGS((buf_T *buf));
 
 #if defined(FEAT_SIGNS)
 static void insert_sign __ARGS((buf_T *buf, signlist_T *prev, signlist_T *next, int id, linenr_T lnum, int typenr));
-static void buf_delete_signs __ARGS((buf_T *buf));
 #endif
 
 #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
@@ -5537,7 +5536,7 @@ buf_signcount(buf, lnum)
 /*
  * Delete signs in buffer "buf".
  */
-    static void
+    void
 buf_delete_signs(buf)
     buf_T      *buf;
 {
index a17b40cb68a09b63be67cb5a8a41c0a5ff0ad45e..01e820dd6e336c6a750e4666a4ae9f934e676685 100644 (file)
@@ -6997,6 +6997,16 @@ ex_sign(eap)
                lnum = atoi((char *)arg);
                arg = skiptowhite(arg);
            }
+           else if (STRNCMP(arg, "*", 1) == 0 && idx == SIGNCMD_UNPLACE)
+           {
+               if (id != -1)
+               {
+                   EMSG(_(e_invarg));
+                   return;
+               }
+               id = -2;
+               arg = skiptowhite(arg + 1);
+           }
            else if (STRNCMP(arg, "name=", 5) == 0)
            {
                arg += 5;
@@ -7033,7 +7043,7 @@ ex_sign(eap)
        {
            EMSG2(_("E158: Invalid buffer name: %s"), arg);
        }
-       else if (id <= 0)
+       else if (id <= 0 && !(idx == SIGNCMD_UNPLACE && id == -2))
        {
            if (lnum >= 0 || sign_name != NULL)
                EMSG(_(e_invarg));
@@ -7074,11 +7084,17 @@ ex_sign(eap)
        }
        else if (idx == SIGNCMD_UNPLACE)
        {
-           /* ":sign unplace {id} file={fname}" */
            if (lnum >= 0 || sign_name != NULL)
                EMSG(_(e_invarg));
+           else if (id == -2)
+           {
+               /* ":sign unplace * file={fname}" */
+               redraw_buf_later(buf, NOT_VALID);
+               buf_delete_signs(buf);
+           }
            else
            {
+               /* ":sign unplace {id} file={fname}" */
                lnum = buf_delsign(buf, id);
                update_debug_sign(buf, lnum);
            }
index 23957124d0166cdb5a159c7e4bb74a5658abcb47..411c5af57e41ee685b442bc9e728f47e2b3392fd 100644 (file)
@@ -60,6 +60,7 @@ int buf_findsign __ARGS((buf_T *buf, int id));
 int buf_findsign_id __ARGS((buf_T *buf, linenr_T lnum));
 int buf_findsigntype_id __ARGS((buf_T *buf, linenr_T lnum, int typenr));
 int buf_signcount __ARGS((buf_T *buf, linenr_T lnum));
+void buf_delete_signs __ARGS((buf_T *buf));
 void buf_delete_all_signs __ARGS((void));
 void sign_list_placed __ARGS((buf_T *rbuf));
 void sign_mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after));
index e4e90660ae7d67cb76644752b5561df8d379f669..80abb73ee965a142795ac9318455295fb28d18df 100644 (file)
@@ -714,6 +714,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    596,
 /**/
     595,
 /**/