]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.1708: getcompletion() failes for user-defined commands v9.0.1708
authorChristian Brabandt <cb@256bit.org>
Mon, 17 Jul 2023 18:09:37 +0000 (20:09 +0200)
committerChristian Brabandt <cb@256bit.org>
Sun, 13 Aug 2023 17:32:37 +0000 (19:32 +0200)
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>
src/testdir/test_cmdline.vim
src/usercmd.c
src/version.c

index ff38b69c6e3d236a6fcf986cf64f173b8821c948..ba3af3c71e3144dbb16e24a0b8363c0d1fe76a19 100644 (file)
@@ -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
index 57435fafbc2a8870f82636ec8235332aa6d9ee57..6f4e105821bf20a15a0eded9c5c062334c981b33 100644 (file)
@@ -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);
index edc013b757dba15fa42c41e09326bf6a15d69400..d38e9b46f7ce8af7526ad61aa92d5fe3805f5aa2 100644 (file)
@@ -695,6 +695,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1708,
 /**/
     1707,
 /**/