diff options
author | Christian Brabandt <cb@256bit.org> | 2023-07-17 20:09:37 +0200 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2023-08-13 19:32:37 +0200 |
commit | 8ef1fbc0c3ca8dca32c352f3cf30e7a4b3096a94 (patch) | |
tree | db6d8c64e30698119a43186fe24b4754f413bf36 | |
parent | badeedd913d9d6456ad8087911d024fd36800743 (diff) |
patch 9.0.1708: getcompletion() failes for user-defined commandsv9.0.1708
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>
-rw-r--r-- | src/testdir/test_cmdline.vim | 10 | ||||
-rw-r--r-- | src/usercmd.c | 4 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 16 insertions, 0 deletions
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index ff38b69c6e..ba3af3c71e 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 57435fafbc..6f4e105821 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 edc013b757..d38e9b46f7 100644 --- 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, |