patch 9.0.1708: getcompletion() failes for user-defined commands
Commit:
https://github.com/vim/vim/commit/8ef1fbc0c3ca8dca32c352f3cf30e7a4b3096a94
Author: Christian Brabandt <[email protected]>
Date: Mon Jul 17 20:09:37 2023 +0200
patch 9.0.1708: getcompletion() failes for user-defined commands
Problem: getcompletion() failes for user-defined commands
Solution: set context for completion function
closes: #12681
closes: #12680
Signed-off-by: Christian Brabandt <[email protected]>
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index ff38b69c6..ba3af3c71 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -3498,4 +3498,14 @@ func Test_rulerformat_position()
call StopVimInTerminal(buf)
endfunc
+func Test_usercmd_completion()
+ let g:complete=[]
+ command! -nargs=* -complete=command TestCompletion echo <q-args>
+ let g:complete = getcompletion('TestCompletion ', 'cmdline')
+ let a = getcompletion('', 'cmdline')
+
+ call assert_equal(a, g:complete)
+ delcom TestCompletion
+ unlet! g:complete
+endfunc
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/usercmd.c b/src/usercmd.c
index 57435fafb..6f4e10582 100644
--- a/src/usercmd.c
+++ b/src/usercmd.c
@@ -329,7 +329,11 @@ set_context_in_user_cmdarg(
return set_context_in_menu_cmd(xp, cmd, arg, forceit);
#endif
if (context == EXPAND_COMMANDS)
+ {
+ if (xp->xp_context == EXPAND_NOTHING)
+ xp->xp_context = context;
return arg;
+ }
if (context == EXPAND_MAPPINGS)
return set_context_in_map_cmd(xp, (char_u *)"map", arg, forceit, FALSE,
FALSE, CMD_map);
diff --git a/src/version.c b/src/version.c
index edc013b75..d38e9b46f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -695,6 +695,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1708,
/**/
1707,
/**/
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/E1qVF9D-000L3U-G7%40256bit.org.