diff options
author | Shougo Matsushita <Shougo.Matsu@gmail.com> | 2023-08-20 20:55:55 +0200 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2023-08-20 20:55:55 +0200 |
commit | 92997dda789ad8061841128cbc99b15ec0374411 (patch) | |
tree | 47a00691b428554c6d6bba0126e7b3874d28b135 /src/ex_getln.c | |
parent | 19a3bc3addf9b4aa8150a01b11b4249c67d15d3b (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.c | 16 |
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); } /* |