changeset 32784:a61007fbc2a3 v9.0.1708

patch 9.0.1708: getcompletion() failes for user-defined commands Commit: https://github.com/vim/vim/commit/8ef1fbc0c3ca8dca32c352f3cf30e7a4b3096a94 Author: Christian Brabandt <cb@256bit.org> 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 <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Sun, 13 Aug 2023 19:45:03 +0200
parents 8501b4e08f8f
children 4e4dfedb6ed8
files src/testdir/test_cmdline.vim src/usercmd.c src/version.c
diffstat 3 files changed, 16 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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);
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1708,
+/**/
     1707,
 /**/
     1706,