summaryrefslogtreecommitdiffstats
path: root/src/ex_getln.c
diff options
context:
space:
mode:
authorShougo Matsushita <Shougo.Matsu@gmail.com>2023-08-20 20:55:55 +0200
committerChristian Brabandt <cb@256bit.org>2023-08-20 20:55:55 +0200
commit92997dda789ad8061841128cbc99b15ec0374411 (patch)
tree47a00691b428554c6d6bba0126e7b3874d28b135 /src/ex_getln.c
parent19a3bc3addf9b4aa8150a01b11b4249c67d15d3b (diff)
patch 9.0.1774: no support for custom cmdline completionv9.0.1774
Problem: no support for custom cmdline completion Solution: Add new vimscript functions Add the following two functions: - getcmdcompltype() returns custom and customlist functions - getcompletion() supports both custom and customlist closes: #12228 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Shougo Matsushita <Shougo.Matsu@gmail.com>
Diffstat (limited to 'src/ex_getln.c')
-rw-r--r--src/ex_getln.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/ex_getln.c b/src/ex_getln.c
index dff7ec9ff5..88eba32b80 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -4152,6 +4152,7 @@ get_cmdline_str(void)
get_cmdline_completion(void)
{
cmdline_info_T *p;
+ char_u *buffer;
if (cmdline_star > 0)
return NULL;
@@ -4165,10 +4166,19 @@ get_cmdline_completion(void)
return NULL;
char_u *cmd_compl = cmdcomplete_type_to_str(p->xpc->xp_context);
- if (cmd_compl != NULL)
- return vim_strsave(cmd_compl);
+ if (cmd_compl == NULL)
+ return NULL;
- return NULL;
+ if (p->xpc->xp_context == EXPAND_USER_LIST || p->xpc->xp_context == EXPAND_USER_DEFINED)
+ {
+ buffer = alloc(STRLEN(cmd_compl) + STRLEN(p->xpc->xp_arg) + 2);
+ if (buffer == NULL)
+ return NULL;
+ sprintf((char *)buffer, "%s,%s", cmd_compl, p->xpc->xp_arg);
+ return buffer;
+ }
+
+ return vim_strsave(cmd_compl);
}
/*