diff options
author | Shougo Matsushita <Shougo.Matsu@gmail.com> | 2023-08-20 20:55:55 +0200 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2023-08-20 20:55:55 +0200 |
commit | 92997dda789ad8061841128cbc99b15ec0374411 (patch) | |
tree | 47a00691b428554c6d6bba0126e7b3874d28b135 /src/testdir/test_cmdline.vim | |
parent | 19a3bc3addf9b4aa8150a01b11b4249c67d15d3b (diff) |
patch 9.0.1774: no support for custom cmdline completionv9.0.1774
Problem: no support for custom cmdline completion
Solution: Add new vimscript functions
Add the following two functions:
- getcmdcompltype() returns custom and customlist functions
- getcompletion() supports both custom and customlist
closes: #12228
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Shougo Matsushita <Shougo.Matsu@gmail.com>
Diffstat (limited to 'src/testdir/test_cmdline.vim')
-rw-r--r-- | src/testdir/test_cmdline.vim | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index b5dec06956..b2566cdfb1 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -3511,4 +3511,42 @@ func Test_getcompletion_usercmd() delcom TestCompletion endfunc +func Test_custom_completion() + func CustomComplete1(lead, line, pos) + return "a\nb\nc" + endfunc + func CustomComplete2(lead, line, pos) + return ['a', 'b']->filter({ _, val -> val->stridx(a:lead) == 0 }) + endfunc + func Check_custom_completion() + call assert_equal('custom,CustomComplete1', getcmdcompltype()) + return '' + endfunc + func Check_customlist_completion() + call assert_equal('customlist,CustomComplete2', getcmdcompltype()) + return '' + endfunc + + command -nargs=1 -complete=custom,CustomComplete1 Test1 echo + command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo + + call feedkeys(":Test1 \<C-R>=Check_custom_completion()\<CR>\<Esc>", "xt") + call feedkeys(":Test2 \<C-R>=Check_customlist_completion()\<CR>\<Esc>", "xt") + + call assert_fails("call getcompletion('', 'custom')", 'E475:') + call assert_fails("call getcompletion('', 'customlist')", 'E475:') + + call assert_equal(getcompletion('', 'custom,CustomComplete1'), ['a', 'b', 'c']) + call assert_equal(getcompletion('', 'customlist,CustomComplete2'), ['a', 'b']) + call assert_equal(getcompletion('b', 'customlist,CustomComplete2'), ['b']) + + delcom Test1 + delcom Test2 + + delfunc CustomComplete1 + delfunc CustomComplete2 + delfunc Check_custom_completion + delfunc Check_customlist_completion +endfunc + " vim: shiftwidth=2 sts=2 expandtab |