mirror of
https://github.com/neovim/neovim.git
synced 2025-09-18 09:18:19 +00:00
vim-patch:9.0.1231: completion of :runtime does not handle {where} argument
Problem: Completion of :runtime does not handle {where} argument.
Solution: Parse the {where} argument. (closes vim/vim#11863)
3770f4c9cd
This commit is contained in:
@@ -2075,8 +2075,7 @@ static const char *set_context_by_cmdname(const char *cmd, cmdidx_T cmdidx, expa
|
||||
break;
|
||||
|
||||
case CMD_runtime:
|
||||
xp->xp_context = EXPAND_RUNTIME;
|
||||
xp->xp_pattern = (char *)arg;
|
||||
set_context_in_runtime_cmd(xp, arg);
|
||||
break;
|
||||
|
||||
case CMD_compiler:
|
||||
@@ -2720,9 +2719,7 @@ static int ExpandFromContext(expand_T *xp, char *pat, char ***matches, int *numM
|
||||
return ExpandRTDir(pat, DIP_START + DIP_OPT, numMatches, matches, directories);
|
||||
}
|
||||
if (xp->xp_context == EXPAND_RUNTIME) {
|
||||
char *directories[] = { "", NULL };
|
||||
return ExpandRTDir(pat, DIP_START + DIP_OPT + DIP_PRNEXT, numMatches,
|
||||
matches, directories);
|
||||
return expand_runtime_cmd(pat, numMatches, matches);
|
||||
}
|
||||
if (xp->xp_context == EXPAND_COMPILER) {
|
||||
char *directories[] = { "compiler", NULL };
|
||||
@@ -3213,11 +3210,12 @@ static int ExpandUserLua(expand_T *xp, int *num_file, char ***file)
|
||||
|
||||
/// Expand `file` for all comma-separated directories in `path`.
|
||||
/// Adds matches to `ga`.
|
||||
void globpath(char *path, char *file, garray_T *ga, int expand_options)
|
||||
/// If "dirs" is true only expand directory names.
|
||||
void globpath(char *path, char *file, garray_T *ga, int expand_options, bool dirs)
|
||||
{
|
||||
expand_T xpc;
|
||||
ExpandInit(&xpc);
|
||||
xpc.xp_context = EXPAND_FILES;
|
||||
xpc.xp_context = dirs ? EXPAND_DIRECTORIES : EXPAND_FILES;
|
||||
|
||||
char *buf = xmalloc(MAXPATHL);
|
||||
|
||||
@@ -3536,11 +3534,14 @@ void f_getcompletion(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
|
||||
set_context_in_menu_cmd(&xpc, "menu", xpc.xp_pattern, false);
|
||||
xpc.xp_pattern_len = strlen(xpc.xp_pattern);
|
||||
}
|
||||
|
||||
if (xpc.xp_context == EXPAND_SIGN) {
|
||||
set_context_in_sign_cmd(&xpc, xpc.xp_pattern);
|
||||
xpc.xp_pattern_len = strlen(xpc.xp_pattern);
|
||||
}
|
||||
if (xpc.xp_context == EXPAND_RUNTIME) {
|
||||
set_context_in_runtime_cmd(&xpc, xpc.xp_pattern);
|
||||
xpc.xp_pattern_len = strlen(xpc.xp_pattern);
|
||||
}
|
||||
|
||||
theend:
|
||||
if (cmdline_fuzzy_completion_supported(&xpc)) {
|
||||
|
Reference in New Issue
Block a user