vim-patch:9.0.1520: completion for option name includes all bool options (#23518)

Problem:    Completion for option name includes all bool options.
Solution:   Do not recognize the "noinv" prefix.  Prefix "no" or "inv" when
            appropriate.

048d9d2521

Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
zeertzjq
2023-05-07 08:00:08 +08:00
committed by GitHub
parent 9e34aa76c1
commit fa1baa9a47
4 changed files with 34 additions and 6 deletions

View File

@@ -897,12 +897,27 @@ char *ExpandOne(expand_T *xp, char *str, char *orig, int options, int mode)
if (mode == WILD_ALL && xp->xp_numfiles > 0 && !got_int) {
size_t len = 0;
for (int i = 0; i < xp->xp_numfiles; i++) {
if (i > 0) {
if (xp->xp_prefix == XP_PREFIX_NO) {
len += 2; // prefix "no"
} else if (xp->xp_prefix == XP_PREFIX_INV) {
len += 3; // prefix "inv"
}
}
len += strlen(xp->xp_files[i]) + 1;
}
ss = xmalloc(len);
*ss = NUL;
for (int i = 0; i < xp->xp_numfiles; i++) {
if (i > 0) {
if (xp->xp_prefix == XP_PREFIX_NO) {
STRCAT(ss, "no");
} else if (xp->xp_prefix == XP_PREFIX_INV) {
STRCAT(ss, "inv");
}
}
STRCAT(ss, xp->xp_files[i]);
if (i != xp->xp_numfiles - 1) {
STRCAT(ss, (options & WILD_USE_NL) ? "\n" : " ");
}
@@ -927,6 +942,7 @@ void ExpandInit(expand_T *xp)
{
CLEAR_POINTER(xp);
xp->xp_backslash = XP_BS_NONE;
xp->xp_prefix = XP_PREFIX_NONE;
xp->xp_numfiles = -1;
}