mirror of
https://github.com/vim/vim.git
synced 2025-09-27 04:14:06 -04:00
updated for version 7.4.312
Problem: Cannot figure out what argument list is being used for a window. Solution: Add the arglistid() function. (Marcin Szamotulski)
This commit is contained in:
@@ -1716,6 +1716,8 @@ append( {lnum}, {string}) Number append {string} below line {lnum}
|
|||||||
append( {lnum}, {list}) Number append lines {list} below line {lnum}
|
append( {lnum}, {list}) Number append lines {list} below line {lnum}
|
||||||
argc() Number number of files in the argument list
|
argc() Number number of files in the argument list
|
||||||
argidx() Number current index 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( {nr}) String {nr} entry of the argument list
|
||||||
argv( ) List the argument list
|
argv( ) List the argument list
|
||||||
asin( {expr}) Float arc sine of {expr}
|
asin( {expr}) Float arc sine of {expr}
|
||||||
@@ -2103,6 +2105,18 @@ argc() The result is the number of files in the argument list of the
|
|||||||
argidx() The result is the current index in the argument list. 0 is
|
argidx() The result is the current index in the argument list. 0 is
|
||||||
the first file. argc() - 1 is the last one. See |arglist|.
|
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()*
|
||||||
argv([{nr}]) The result is the {nr}th file in the argument list of the
|
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.
|
current window. See |arglist|. "argv(0)" is the first one.
|
||||||
|
@@ -772,6 +772,7 @@ Date and Time: *date-functions* *time-functions*
|
|||||||
Buffers, windows and the argument list:
|
Buffers, windows and the argument list:
|
||||||
argc() number of entries in the argument list
|
argc() number of entries in the argument list
|
||||||
argidx() current position 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
|
argv() get one entry from the argument list
|
||||||
bufexists() check if a buffer exists
|
bufexists() check if a buffer exists
|
||||||
buflisted() check if a buffer exists and is listed
|
buflisted() check if a buffer exists and is listed
|
||||||
|
37
src/eval.c
37
src/eval.c
@@ -463,6 +463,7 @@ static void f_and __ARGS((typval_T *argvars, typval_T *rettv));
|
|||||||
static void f_append __ARGS((typval_T *argvars, typval_T *rettv));
|
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_argc __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
static void f_argidx __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));
|
static void f_argv __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
#ifdef FEAT_FLOAT
|
#ifdef FEAT_FLOAT
|
||||||
static void f_asin __ARGS((typval_T *argvars, typval_T *rettv));
|
static void f_asin __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
@@ -7875,6 +7876,7 @@ static struct fst
|
|||||||
{"append", 2, 2, f_append},
|
{"append", 2, 2, f_append},
|
||||||
{"argc", 0, 0, f_argc},
|
{"argc", 0, 0, f_argc},
|
||||||
{"argidx", 0, 0, f_argidx},
|
{"argidx", 0, 0, f_argidx},
|
||||||
|
{"arglistid", 0, 2, f_arglistid},
|
||||||
{"argv", 0, 1, f_argv},
|
{"argv", 0, 1, f_argv},
|
||||||
#ifdef FEAT_FLOAT
|
#ifdef FEAT_FLOAT
|
||||||
{"asin", 1, 1, f_asin}, /* WJMc */
|
{"asin", 1, 1, f_asin}, /* WJMc */
|
||||||
@@ -8858,6 +8860,41 @@ f_argidx(argvars, rettv)
|
|||||||
rettv->vval.v_number = curwin->w_arg_idx;
|
rettv->vval.v_number = curwin->w_arg_idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* "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
|
* "argv(nr)" function
|
||||||
*/
|
*/
|
||||||
|
@@ -7211,6 +7211,7 @@ alist_new()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
curwin->w_alist->al_refcount = 1;
|
curwin->w_alist->al_refcount = 1;
|
||||||
|
curwin->w_alist->id = ++max_alist_id;
|
||||||
alist_init(curwin->w_alist);
|
alist_init(curwin->w_alist);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -601,6 +601,7 @@ EXTERN int mf_dont_release INIT(= FALSE); /* don't release blocks */
|
|||||||
* to this when the window is using the global argument list.
|
* to this when the window is using the global argument list.
|
||||||
*/
|
*/
|
||||||
EXTERN alist_T global_alist; /* 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
|
EXTERN int arg_had_last INIT(= FALSE); /* accessed last file in
|
||||||
global_alist */
|
global_alist */
|
||||||
|
|
||||||
|
@@ -322,6 +322,7 @@ main
|
|||||||
init_yank(); /* init yank buffers */
|
init_yank(); /* init yank buffers */
|
||||||
|
|
||||||
alist_init(&global_alist); /* Init the argument list to empty. */
|
alist_init(&global_alist); /* Init the argument list to empty. */
|
||||||
|
global_alist.id = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set the default values for the options.
|
* Set the default values for the options.
|
||||||
|
@@ -675,6 +675,7 @@ typedef struct arglist
|
|||||||
{
|
{
|
||||||
garray_T al_ga; /* growarray with the array of file names */
|
garray_T al_ga; /* growarray with the array of file names */
|
||||||
int al_refcount; /* number of windows using this arglist */
|
int al_refcount; /* number of windows using this arglist */
|
||||||
|
int id; /* id of this arglist */
|
||||||
} alist_T;
|
} alist_T;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -734,6 +734,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
312,
|
||||||
/**/
|
/**/
|
||||||
311,
|
311,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user