mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.1.2233: cannot get the Vim command line arguments
Problem: Cannot get the Vim command line arguments. Solution: Add v:argv. (Dmitri Vereshchagin, closes #1322)
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
*eval.txt* For Vim version 8.1. Last change: 2019 Oct 26
|
*eval.txt* For Vim version 8.1. Last change: 2019 Oct 29
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@@ -1662,6 +1662,10 @@ PREDEFINED VIM VARIABLES *vim-variable* *v:var* *v:*
|
|||||||
*E963*
|
*E963*
|
||||||
Some variables can be set by the user, but the type cannot be changed.
|
Some variables can be set by the user, but the type cannot be changed.
|
||||||
|
|
||||||
|
*v:argv* *argv-variable*
|
||||||
|
v:argv The command line arguments Vim was invoked with. This is a
|
||||||
|
list of strings. The first item is the Vim command.
|
||||||
|
|
||||||
*v:beval_col* *beval_col-variable*
|
*v:beval_col* *beval_col-variable*
|
||||||
v:beval_col The number of the column, over which the mouse pointer is.
|
v:beval_col The number of the column, over which the mouse pointer is.
|
||||||
This is the byte index in the |v:beval_lnum| line.
|
This is the byte index in the |v:beval_lnum| line.
|
||||||
@@ -3034,6 +3038,7 @@ argv([{nr} [, {winid}])
|
|||||||
the whole |arglist| is returned.
|
the whole |arglist| is returned.
|
||||||
|
|
||||||
The {winid} argument specifies the window ID, see |argc()|.
|
The {winid} argument specifies the window ID, see |argc()|.
|
||||||
|
For the Vim command line arguments see |v:argv|.
|
||||||
|
|
||||||
|
|
||||||
assert_ functions are documented here: |assert-functions-details|
|
assert_ functions are documented here: |assert-functions-details|
|
||||||
|
@@ -143,6 +143,7 @@ static struct vimvar
|
|||||||
{VV_NAME("event", VAR_DICT), VV_RO},
|
{VV_NAME("event", VAR_DICT), VV_RO},
|
||||||
{VV_NAME("versionlong", VAR_NUMBER), VV_RO},
|
{VV_NAME("versionlong", VAR_NUMBER), VV_RO},
|
||||||
{VV_NAME("echospace", VAR_NUMBER), VV_RO},
|
{VV_NAME("echospace", VAR_NUMBER), VV_RO},
|
||||||
|
{VV_NAME("argv", VAR_LIST), VV_RO},
|
||||||
};
|
};
|
||||||
|
|
||||||
// shorthand
|
// shorthand
|
||||||
@@ -2085,6 +2086,27 @@ set_vim_var_dict(int idx, dict_T *val)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the v:argv list.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
set_argv_var(char **argv, int argc)
|
||||||
|
{
|
||||||
|
list_T *l = list_alloc();
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (l == NULL)
|
||||||
|
getout(1);
|
||||||
|
l->lv_lock = VAR_FIXED;
|
||||||
|
for (i = 0; i < argc; ++i)
|
||||||
|
{
|
||||||
|
if (list_append_string(l, (char_u *)argv[i], -1) == FAIL)
|
||||||
|
getout(1);
|
||||||
|
l->lv_last->li_tv.v_lock = VAR_FIXED;
|
||||||
|
}
|
||||||
|
set_vim_var_list(VV_ARGV, l);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set v:register if needed.
|
* Set v:register if needed.
|
||||||
*/
|
*/
|
||||||
|
@@ -1009,7 +1009,11 @@ common_init(mparm_T *paramp)
|
|||||||
TIME_MSG("inits 1");
|
TIME_MSG("inits 1");
|
||||||
|
|
||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
set_lang_var(); /* set v:lang and v:ctype */
|
// set v:lang and v:ctype
|
||||||
|
set_lang_var();
|
||||||
|
|
||||||
|
// set v:argv
|
||||||
|
set_argv_var(paramp->argv, paramp->argc);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FEAT_SIGNS
|
#ifdef FEAT_SIGNS
|
||||||
|
@@ -5986,7 +5986,7 @@ nv_g_cmd(cmdarg_T *cap)
|
|||||||
oap->motion_type = MCHAR;
|
oap->motion_type = MCHAR;
|
||||||
oap->inclusive = FALSE;
|
oap->inclusive = FALSE;
|
||||||
if (has_mbyte)
|
if (has_mbyte)
|
||||||
i = mb_string2cells(ptr, STRLEN(ptr));
|
i = mb_string2cells(ptr, (int)STRLEN(ptr));
|
||||||
else
|
else
|
||||||
i = (int)STRLEN(ptr);
|
i = (int)STRLEN(ptr);
|
||||||
if (cap->count0 > 0 && cap->count0 <= 100)
|
if (cap->count0 > 0 && cap->count0 <= 100)
|
||||||
|
@@ -41,6 +41,7 @@ void restore_vimvars(vimvars_save_T *vvsave);
|
|||||||
void set_vim_var_string(int idx, char_u *val, int len);
|
void set_vim_var_string(int idx, char_u *val, int len);
|
||||||
void set_vim_var_list(int idx, list_T *val);
|
void set_vim_var_list(int idx, list_T *val);
|
||||||
void set_vim_var_dict(int idx, dict_T *val);
|
void set_vim_var_dict(int idx, dict_T *val);
|
||||||
|
void set_argv_var(char **argv, int argc);
|
||||||
void set_reg_var(int c);
|
void set_reg_var(int c);
|
||||||
char_u *v_exception(char_u *oldval);
|
char_u *v_exception(char_u *oldval);
|
||||||
char_u *v_throwpoint(char_u *oldval);
|
char_u *v_throwpoint(char_u *oldval);
|
||||||
|
@@ -671,3 +671,15 @@ func Test_start_with_tabs()
|
|||||||
" clean up
|
" clean up
|
||||||
call StopVimInTerminal(buf)
|
call StopVimInTerminal(buf)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_v_argv()
|
||||||
|
" Can't catch the output of gvim.
|
||||||
|
CheckNotGui
|
||||||
|
|
||||||
|
let out = system(GetVimCommand() . ' -es -V1 -X arg1 --cmd "echo v:argv" --cmd q')
|
||||||
|
let list = out->split("', '")
|
||||||
|
call assert_match('vim', list[0])
|
||||||
|
let idx = index(list, 'arg1')
|
||||||
|
call assert_true(idx > 2)
|
||||||
|
call assert_equal(['arg1', '--cmd', 'echo v:argv', '--cmd', 'q'']'], list[idx:])
|
||||||
|
endfunc
|
||||||
|
@@ -741,6 +741,10 @@ 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 */
|
||||||
|
/**/
|
||||||
|
2233,
|
||||||
|
/**/
|
||||||
|
2232,
|
||||||
/**/
|
/**/
|
||||||
2231,
|
2231,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -1990,7 +1990,8 @@ typedef int sock_T;
|
|||||||
#define VV_EVENT 90
|
#define VV_EVENT 90
|
||||||
#define VV_VERSIONLONG 91
|
#define VV_VERSIONLONG 91
|
||||||
#define VV_ECHOSPACE 92
|
#define VV_ECHOSPACE 92
|
||||||
#define VV_LEN 93 // number of v: vars
|
#define VV_ARGV 93
|
||||||
|
#define VV_LEN 94 // number of v: vars
|
||||||
|
|
||||||
// used for v_number in VAR_SPECIAL
|
// used for v_number in VAR_SPECIAL
|
||||||
#define VVAL_FALSE 0L
|
#define VVAL_FALSE 0L
|
||||||
|
Reference in New Issue
Block a user