patch 9.0.1636: expanding a pattern interferes with cmdline completion
Problem: Expanding a pattern interferes with command line completion.
Solution: Set the file index only when appropriate. (closes #12519)
diff --git a/src/cmdexpand.c b/src/cmdexpand.c
index 4661538..0969106 100644
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -957,7 +957,7 @@
int mode)
{
char_u *ss = NULL;
- static int findex;
+ static int findex; // TODO: Move into expand_T
static char_u *orig_save = NULL; // kept value of orig
int orig_saved = FALSE;
int i;
@@ -971,8 +971,9 @@
if (mode == WILD_CANCEL)
ss = vim_strsave(orig_save ? orig_save : (char_u *)"");
else if (mode == WILD_APPLY)
- ss = vim_strsave(findex == -1 ? (orig_save ?
- orig_save : (char_u *)"") : xp->xp_files[findex]);
+ ss = vim_strsave(findex == -1
+ ? (orig_save ? orig_save : (char_u *)"")
+ : xp->xp_files[findex]);
// free old names
if (xp->xp_numfiles != -1 && mode != WILD_ALL && mode != WILD_LONGEST)
@@ -985,7 +986,9 @@
if (compl_match_array != NULL)
cmdline_pum_remove();
}
- findex = 0;
+ // TODO: Remove condition if "findex" is part of expand_T ?
+ if (mode != WILD_EXPAND_FREE && mode != WILD_ALL && mode != WILD_ALL_KEEP)
+ findex = 0;
if (mode == WILD_FREE) // only release file name
return NULL;