summaryrefslogtreecommitdiffstats
path: root/src/eval.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2006-03-29 21:18:24 +0000
committerBram Moolenaar <Bram@vim.org>2006-03-29 21:18:24 +0000
commite2f98b95c8071f772695602cd4f714dc588eb8e7 (patch)
tree28442f952f7e5258e2addd8871a4a2930e768c0a /src/eval.c
parent86ca6e3b8c9c5d909421eb5abc2d81e02d402b49 (diff)
updated for version 7.0c03v7.0c03
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/eval.c b/src/eval.c
index 63abcbae24..4697e97f2e 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -6900,7 +6900,7 @@ static struct fst
{"append", 2, 2, f_append},
{"argc", 0, 0, f_argc},
{"argidx", 0, 0, f_argidx},
- {"argv", 1, 1, f_argv},
+ {"argv", 0, 1, f_argv},
{"browse", 4, 4, f_browse},
{"browsedir", 2, 2, f_browsedir},
{"bufexists", 1, 1, f_bufexists},
@@ -7651,12 +7651,19 @@ f_argv(argvars, rettv)
{
int idx;
- idx = get_tv_number_chk(&argvars[0], NULL);
- if (idx >= 0 && idx < ARGCOUNT)
- rettv->vval.v_string = vim_strsave(alist_name(&ARGLIST[idx]));
- else
- rettv->vval.v_string = NULL;
- rettv->v_type = VAR_STRING;
+ if (argvars[0].v_type != VAR_UNKNOWN)
+ {
+ idx = get_tv_number_chk(&argvars[0], NULL);
+ if (idx >= 0 && idx < ARGCOUNT)
+ rettv->vval.v_string = vim_strsave(alist_name(&ARGLIST[idx]));
+ else
+ rettv->vval.v_string = NULL;
+ rettv->v_type = VAR_STRING;
+ }
+ else if (rettv_list_alloc(rettv) == OK)
+ for (idx = 0; idx < ARGCOUNT; ++idx)
+ list_append_string(rettv->vval.v_list,
+ alist_name(&ARGLIST[idx]), -1);
}
/*