Patch 7.3.596
Problem:    Can't remove all signs for a file or buffer.
Solution:   Support "*" for the sign id. (Christian Brabandt)
Files:      runtime/doc/sign.txt, src/buffer.c, src/ex_cmds.c,
            src/proto/buffer.pro


*** ../vim-7.3.595/runtime/doc/sign.txt 2010-08-15 21:57:17.000000000 +0200
--- runtime/doc/sign.txt        2012-07-10 15:05:19.000000000 +0200
***************
*** 150,157 ****
                Remove the previously placed sign {id} from file {fname}.
                See remark above about {fname} |:sign-fname|.
  
  :sign unplace {id} buffer={nr}
!               Same, but use buffer {nr}.
  
  :sign unplace {id}
                Remove the previously placed sign {id} from all files it
--- 153,166 ----
                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}
!               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
*** ../vim-7.3.595/src/buffer.c 2012-07-06 16:21:58.000000000 +0200
--- src/buffer.c        2012-07-10 15:06:05.000000000 +0200
***************
*** 57,63 ****
  
  #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)
--- 57,62 ----
***************
*** 5537,5543 ****
  /*
   * Delete signs in buffer "buf".
   */
!     static void
  buf_delete_signs(buf)
      buf_T     *buf;
  {
--- 5536,5542 ----
  /*
   * Delete signs in buffer "buf".
   */
!     void
  buf_delete_signs(buf)
      buf_T     *buf;
  {
*** ../vim-7.3.595/src/ex_cmds.c        2012-05-18 16:24:06.000000000 +0200
--- src/ex_cmds.c       2012-07-10 15:14:22.000000000 +0200
***************
*** 6997,7002 ****
--- 6997,7012 ----
                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,7039 ****
        {
            EMSG2(_("E158: Invalid buffer name: %s"), arg);
        }
!       else if (id <= 0)
        {
            if (lnum >= 0 || sign_name != NULL)
                EMSG(_(e_invarg));
--- 7043,7049 ----
        {
            EMSG2(_("E158: Invalid buffer name: %s"), arg);
        }
!       else if (id <= 0 && !(idx == SIGNCMD_UNPLACE && id == -2))
        {
            if (lnum >= 0 || sign_name != NULL)
                EMSG(_(e_invarg));
***************
*** 7074,7084 ****
        }
        else if (idx == SIGNCMD_UNPLACE)
        {
-           /* ":sign unplace {id} file={fname}" */
            if (lnum >= 0 || sign_name != NULL)
                EMSG(_(e_invarg));
            else
            {
                lnum = buf_delsign(buf, id);
                update_debug_sign(buf, lnum);
            }
--- 7084,7100 ----
        }
        else if (idx == SIGNCMD_UNPLACE)
        {
            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);
            }
*** ../vim-7.3.595/src/proto/buffer.pro 2012-02-22 14:58:24.000000000 +0100
--- src/proto/buffer.pro        2012-07-10 15:06:10.000000000 +0200
***************
*** 60,65 ****
--- 60,66 ----
  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));
*** ../vim-7.3.595/src/version.c        2012-07-10 14:56:42.000000000 +0200
--- src/version.c       2012-07-10 15:16:40.000000000 +0200
***************
*** 716,717 ****
--- 716,719 ----
  {   /* Add new patch number below this line */
+ /**/
+     596,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
105. When someone asks you for your address, you tell them your URL.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Raspunde prin e-mail lui