1
0
forked from aniani/vim

patch 9.1.0498: getcmdcompltype() interferes with cmdline completion

Problem:  getcmdcompltype() interferes with cmdline completion.
Solution: Don't set expand context when it's already set.
          (zeertzjq)

closes: #15036

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
zeertzjq
2024-06-18 20:31:08 +02:00
committed by Christian Brabandt
parent a48637c105
commit a821b609f9
3 changed files with 26 additions and 6 deletions

View File

@@ -4176,6 +4176,7 @@ get_cmdline_completion(void)
{
cmdline_info_T *p;
char_u *buffer;
int xp_context;
if (cmdline_star > 0)
return NULL;
@@ -4184,15 +4185,21 @@ get_cmdline_completion(void)
if (p == NULL || p->xpc == NULL)
return NULL;
set_expand_context(p->xpc);
if (p->xpc->xp_context == EXPAND_UNSUCCESSFUL)
xp_context = p->xpc->xp_context;
if (xp_context == EXPAND_NOTHING)
{
set_expand_context(p->xpc);
xp_context = p->xpc->xp_context;
p->xpc->xp_context = EXPAND_NOTHING;
}
if (xp_context == EXPAND_UNSUCCESSFUL)
return NULL;
char_u *cmd_compl = cmdcomplete_type_to_str(p->xpc->xp_context);
char_u *cmd_compl = cmdcomplete_type_to_str(xp_context);
if (cmd_compl == NULL)
return NULL;
if (p->xpc->xp_context == EXPAND_USER_LIST || p->xpc->xp_context == EXPAND_USER_DEFINED)
if (xp_context == EXPAND_USER_LIST || xp_context == EXPAND_USER_DEFINED)
{
buffer = alloc(STRLEN(cmd_compl) + STRLEN(p->xpc->xp_arg) + 2);
if (buffer == NULL)