195 lines
6.1 KiB
Plaintext
195 lines
6.1 KiB
Plaintext
To: vim_dev@googlegroups.com
|
|
Subject: Patch 7.4.312
|
|
Fcc: outbox
|
|
From: Bram Moolenaar <Bram@moolenaar.net>
|
|
Mime-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
------------
|
|
|
|
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 -- Bram@Moolenaar.net -- 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 ///
|