Mercurial > vim
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);