diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2017-03-27 21:04:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-27 21:04:52 +0200 |
commit | 9d200cd0a3ef749509cee3331ba1d0b5fb62e7f2 (patch) | |
tree | e7e348486b77ba7f3b166d71c1892660b95b75ad /src/nvim/eval.c | |
parent | 595acbbc42e2856d958f518421a8cb56b0501127 (diff) | |
download | rneovim-9d200cd0a3ef749509cee3331ba1d0b5fb62e7f2.tar.gz rneovim-9d200cd0a3ef749509cee3331ba1d0b5fb62e7f2.tar.bz2 rneovim-9d200cd0a3ef749509cee3331ba1d0b5fb62e7f2.zip |
getcompletion("cmdline") (#6376)
Closes #5823
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index d49fcbf17e..927a1dcb0e 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -10765,16 +10765,23 @@ static void f_getcompletion(typval_T *argvars, typval_T *rettv, FunPtr fptr) options |= WILD_KEEP_ALL; } + if (argvars[0].v_type != VAR_STRING || argvars[1].v_type != VAR_STRING) { + EMSG(_(e_invarg)); + return; + } + + if (STRCMP(get_tv_string(&argvars[1]), "cmdline") == 0) { + set_one_cmd_context(&xpc, get_tv_string(&argvars[0])); + xpc.xp_pattern_len = (int)STRLEN(xpc.xp_pattern); + goto theend; + } + ExpandInit(&xpc); xpc.xp_pattern = get_tv_string(&argvars[0]); xpc.xp_pattern_len = (int)STRLEN(xpc.xp_pattern); xpc.xp_context = cmdcomplete_str_to_type(get_tv_string(&argvars[1])); if (xpc.xp_context == EXPAND_NOTHING) { - if (argvars[1].v_type == VAR_STRING) { - EMSG2(_(e_invarg2), argvars[1].vval.v_string); - } else { - EMSG(_(e_invarg)); - } + EMSG2(_(e_invarg2), argvars[1].vval.v_string); return; } @@ -10793,6 +10800,7 @@ static void f_getcompletion(typval_T *argvars, typval_T *rettv, FunPtr fptr) xpc.xp_pattern_len = (int)STRLEN(xpc.xp_pattern); } +theend: pat = addstar(xpc.xp_pattern, xpc.xp_pattern_len, xpc.xp_context); rettv_list_alloc(rettv); if (pat != NULL) { |