vim-patch:8.2.2341: expresison command line completion incomplete after "g:"

Problem:    Expresison command line completion shows variables but not
            functions after "g:". (Gary Johnson)
Solution:   Prefix "g:" when needed to a global function.
1bb4de5302

Port most of patch v8.2.0335 to complete script-local functions
if the name starts with "s:".
This commit is contained in:
Jan Edmund Lazo
2021-03-12 22:56:58 -05:00
parent b650d2d8d9
commit a4ea602788
4 changed files with 35 additions and 2 deletions

View File

@@ -5117,6 +5117,18 @@ ExpandFromContext (
if (xp->xp_context == EXPAND_PACKADD) {
return ExpandPackAddDir(pat, num_file, file);
}
// When expanding a function name starting with s:, match the <SNR>nr_
// prefix.
char_u *tofree = NULL;
if (xp->xp_context == EXPAND_USER_FUNC && STRNCMP(pat, "^s:", 3) == 0) {
const size_t len = STRLEN(pat) + 20;
tofree = xmalloc(len);
snprintf((char *)tofree, len, "^<SNR>\\d\\+_%s", pat + 3);
pat = tofree;
}
if (xp->xp_context == EXPAND_LUA) {
ILOG("PAT %s", pat);
return nlua_expand_pat(xp, pat, num_file, file);
@@ -5195,6 +5207,7 @@ ExpandFromContext (
}
vim_regfree(regmatch.regprog);
xfree(tofree);
return ret;
}