On 00:48 Sun 20 Jul     , Marcin Szamotulski wrote:
> On 18:23 Wed 28 May     , Bram Moolenaar wrote:
> > 
> > Patch 7.4.312
> > Problem:    Cannot figure out what argument list is being used for a window.
> > Solution:   Add the arglistid() function. (Marcin Szamotulski)
> > Files:          runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/eval.c,
> >         src/ex_docmd.c, src/globals.h, src/structs.h, src/main.c
> > 
> > 
> > *** ../vim-7.4.311/runtime/doc/eval.txt     2014-05-28 16:47:11.396174926 
> > +0200
> > --- runtime/doc/eval.txt    2014-05-28 18:00:06.248213223 +0200
> > ***************
> > *** 1716,1721 ****
> > --- 1716,1723 ----
> >   append( {lnum}, {list})           Number  append lines {list} below line 
> > {lnum}
> >   argc()                            Number  number of files in the argument 
> > list
> >   argidx()                  Number  current index in the argument list
> > + arglistid( [{winnr}, [ {tabnr}]])
> > +                           Number  argument list id
> >   argv( {nr})                       String  {nr} entry of the argument list
> >   argv( )                           List    the argument list
> >   asin( {expr})                     Float   arc sine of {expr}
> > ***************
> > *** 2103,2108 ****
> > --- 2105,2122 ----
> >   argidx()  The result is the current index in the argument list.  0 is
> >             the first file.  argc() - 1 is the last one.  See |arglist|.
> >   
> > +                                                   *arglistid()*
> > + arglistid([{winnr}, [ {tabnr} ]])
> > +           Return the argument list ID.  This is a number which
> > +           identifies the argument list being used.  Zero is used for the
> > +           global argument list.
> > +           Return zero if the arguments are invalid.
> > + 
> > +           Without arguments use the current window.
> > +           With {winnr} only use this window in the current tab page.
> > +           With {winnr} and {tabnr} use the window in the specified tab
> > +           page.
> > + 
> >                                                     *argv()*
> >   argv([{nr}])      The result is the {nr}th file in the argument list of 
> > the
> >             current window.  See |arglist|.  "argv(0)" is the first one.
> > *** ../vim-7.4.311/runtime/doc/usr_41.txt   2014-03-25 18:23:27.054087691 
> > +0100
> > --- runtime/doc/usr_41.txt  2014-05-28 18:07:43.096217222 +0200
> > ***************
> > *** 770,775 ****
> > --- 772,778 ----
> >   Buffers, windows and the argument list:
> >     argc()                  number of entries in the argument list
> >     argidx()                current position in the argument list
> > +   arglistid()             get id of the argument list
> >     argv()                  get one entry from the argument list
> >     bufexists()             check if a buffer exists
> >     buflisted()             check if a buffer exists and is listed
> > *** ../vim-7.4.311/src/eval.c       2014-05-28 16:47:11.392174926 +0200
> > --- src/eval.c      2014-05-28 18:11:10.264219035 +0200
> > ***************
> > *** 463,468 ****
> > --- 463,469 ----
> >   static void f_append __ARGS((typval_T *argvars, typval_T *rettv));
> >   static void f_argc __ARGS((typval_T *argvars, typval_T *rettv));
> >   static void f_argidx __ARGS((typval_T *argvars, typval_T *rettv));
> > + static void f_arglistid __ARGS((typval_T *argvars, typval_T *rettv));
> >   static void f_argv __ARGS((typval_T *argvars, typval_T *rettv));
> >   #ifdef FEAT_FLOAT
> >   static void f_asin __ARGS((typval_T *argvars, typval_T *rettv));
> > ***************
> > *** 7875,7880 ****
> > --- 7876,7882 ----
> >       {"append",            2, 2, f_append},
> >       {"argc",              0, 0, f_argc},
> >       {"argidx",            0, 0, f_argidx},
> > +     {"arglistid", 0, 2, f_arglistid},
> >       {"argv",              0, 1, f_argv},
> >   #ifdef FEAT_FLOAT
> >       {"asin",              1, 1, f_asin},  /* WJMc */
> > ***************
> > *** 8859,8864 ****
> > --- 8861,8901 ----
> >   }
> >   
> >   /*
> > +  * "arglistid()" function
> > +  */
> > +     static void
> > + f_arglistid(argvars, rettv)
> > +     typval_T      *argvars UNUSED;
> > +     typval_T      *rettv;
> > + {
> > +     win_T *wp;
> > +     tabpage_T     *tp = NULL;
> > +     long  n;
> > + 
> > +     rettv->vval.v_number = -1;
> > +     if (argvars[0].v_type != VAR_UNKNOWN)
> > +     {
> > +   if (argvars[1].v_type != VAR_UNKNOWN)
> > +   {
> > +       n = get_tv_number(&argvars[1]);
> > +       if (n >= 0)
> > +           tp = find_tabpage(n);
> > +   }
> > +   else
> > +       tp = curtab;
> > + 
> > +   if (tp != NULL)
> > +   {
> > +       wp = find_win_by_nr(&argvars[0], tp);
> > +       if (wp != NULL)
> > +           rettv->vval.v_number = wp->w_alist->id;
> > +   }
> > +     }
> > +     else
> > +   rettv->vval.v_number = curwin->w_alist->id;
> > + }
> > + 
> > + /*
> >    * "argv(nr)" function
> >    */
> >       static void
> > *** ../vim-7.4.311/src/ex_docmd.c   2014-05-07 21:14:42.913299714 +0200
> > --- src/ex_docmd.c  2014-05-28 18:10:01.696218435 +0200
> > ***************
> > *** 7211,7216 ****
> > --- 7211,7217 ----
> >       else
> >       {
> >     curwin->w_alist->al_refcount = 1;
> > +   curwin->w_alist->id = ++max_alist_id;
> >     alist_init(curwin->w_alist);
> >       }
> >   }
> > *** ../vim-7.4.311/src/globals.h    2014-05-22 18:14:27.570224664 +0200
> > --- src/globals.h   2014-05-28 17:56:53.392211534 +0200
> > ***************
> > *** 601,606 ****
> > --- 601,607 ----
> >    * to this when the window is using the global argument list.
> >    */
> >   EXTERN alist_T    global_alist;   /* global argument list */
> > + EXTERN int        max_alist_id INIT(= 0);     /* the previous argument 
> > list id */
> >   EXTERN int        arg_had_last INIT(= FALSE); /* accessed last file in
> >                                            global_alist */
> >   
> > *** ../vim-7.4.311/src/structs.h    2014-05-13 20:19:53.573808877 +0200
> > --- src/structs.h   2014-05-28 17:54:18.312210177 +0200
> > ***************
> > *** 675,680 ****
> > --- 675,681 ----
> >   {
> >       garray_T      al_ga;          /* growarray with the array of file 
> > names */
> >       int           al_refcount;    /* number of windows using this arglist 
> > */
> > +     int           id;             /* id of this arglist */
> >   } alist_T;
> >   
> >   /*
> > *** ../vim-7.4.311/src/main.c       2014-04-01 19:55:46.252787300 +0200
> > --- src/main.c      2014-05-28 18:09:32.040218175 +0200
> > ***************
> > *** 322,327 ****
> > --- 322,328 ----
> >       init_yank();          /* init yank buffers */
> >   
> >       alist_init(&global_alist);    /* Init the argument list to empty. */
> > +     global_alist.id = 0;
> >   
> >       /*
> >        * Set the default values for the options.
> > *** ../vim-7.4.311/src/version.c    2014-05-28 16:47:11.396174926 +0200
> > --- src/version.c   2014-05-28 17:25:32.644195071 +0200
> > ***************
> > *** 736,737 ****
> > --- 736,739 ----
> >   {   /* Add new patch number below this line */
> > + /**/
> > +     312,
> >   /**/
> > 
> > -- 
> > hundred-and-one symptoms of being an internet addict:
> > 222. You send more than 20 personal e-mails a day.
> > 
> >  /// 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
> > 
> > --- 
> > You received this message because you are subscribed to the Google Groups 
> > "vim_dev" group.
> > To unsubscribe from this group and stop receiving emails from it, send an 
> > email to [email protected].
> > For more options, visit https://groups.google.com/d/optout.
> 
> Dear Bram,
> 
> Thank you for including the patch!
> 
> Best regards,
> Marcin

Dear Bram,

I attach a tiny patch which fixes the documentation of arglistid
ex-function.

Best regards,
Marcin Szamotulski
diff -r 00b2ad86f015 -r cf43c4c44e7a runtime/doc/eval.txt
--- a/runtime/doc/eval.txt	Tue Jul 29 10:14:16 2014 +0100
+++ b/runtime/doc/eval.txt	Tue Jul 29 10:15:21 2014 +0100
@@ -2113,7 +2113,7 @@
 		Return the argument list ID.  This is a number which
 		identifies the argument list being used.  Zero is used for the
 		global argument list.
-		Return zero if the arguments are invalid.
+		Return -1 if the arguments are invalid.
 
 		Without arguments use the current window.
 		With {winnr} only use this window in the current tab page.

Attachment: signature.asc
Description: Digital signature

Raspunde prin e-mail lui