# HG changeset patch # User Christian Brabandt # Date 1691948703 -7200 # Node ID a61007fbc2a39f664410c5eed569ee1df77edb40 # Parent 8501b4e08f8f87ca5207c86369cb645d6568bbb6 patch 9.0.1708: getcompletion() failes for user-defined commands Commit: https://github.com/vim/vim/commit/8ef1fbc0c3ca8dca32c352f3cf30e7a4b3096a94 Author: Christian Brabandt 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 diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim --- 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 + 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 --- 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 --- 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,