diff options
author | Sean Dewar <seandewar@users.noreply.github.com> | 2021-08-21 16:19:45 +0100 |
---|---|---|
committer | Sean Dewar <seandewar@users.noreply.github.com> | 2021-09-17 02:10:44 +0100 |
commit | ebd035f08b667626eb5f2e02d03628483166abed (patch) | |
tree | d65bc70d45786e7aee4f303f779308bc9699d93f | |
parent | 26b7faf1f21c8583587df2e8ed9c3ac3426f677d (diff) | |
download | rneovim-ebd035f08b667626eb5f2e02d03628483166abed.tar.gz rneovim-ebd035f08b667626eb5f2e02d03628483166abed.tar.bz2 rneovim-ebd035f08b667626eb5f2e02d03628483166abed.zip |
vim-patch:8.2.3360: user function completion fails with dict function
Problem: User function completion fails with dict function.
Solution: Do not stop sequencing through the list if user functions when
encountering an empty name. (Naohiro Ono, closes vim/vim#8765,
closes vim/vim#8774)
https://github.com/vim/vim/commit/5aec755b678cfd434b8ea2158d06992f33e1ff80
-rw-r--r-- | src/nvim/eval/funcs.c | 5 | ||||
-rw-r--r-- | src/nvim/testdir/test_cmdline.vim | 10 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c index 2ab9801fab..821a2c8e8e 100644 --- a/src/nvim/eval/funcs.c +++ b/src/nvim/eval/funcs.c @@ -119,8 +119,9 @@ char_u *get_function_name(expand_T *xp, int idx) intidx = -1; if (intidx < 0) { name = get_user_func_name(xp, idx); - if (name != NULL && *name != NUL) { - if (*name != '<' && STRNCMP("g:", xp->xp_pattern, 2) == 0) { + if (name != NULL) { + if (*name != NUL && *name != '<' + && STRNCMP("g:", xp->xp_pattern, 2) == 0) { return cat_prefix_varname('g', name); } return name; diff --git a/src/nvim/testdir/test_cmdline.vim b/src/nvim/testdir/test_cmdline.vim index 9d5987ba30..1c584aeb81 100644 --- a/src/nvim/testdir/test_cmdline.vim +++ b/src/nvim/testdir/test_cmdline.vim @@ -595,7 +595,7 @@ endfunc func Test_cmdline_complete_user_func() call feedkeys(":func Test_cmdline_complete_user\<Tab>\<Home>\"\<cr>", 'tx') - call assert_match('"func Test_cmdline_complete_user', @:) + call assert_match('"func Test_cmdline_complete_user_', @:) call feedkeys(":func s:ScriptL\<Tab>\<Home>\"\<cr>", 'tx') call assert_match('"func <SNR>\d\+_ScriptLocalFunction', @:) @@ -607,6 +607,14 @@ func Test_cmdline_complete_user_func() let Fx = { a -> a } call feedkeys(":echo g:\<Tab>\<Home>\"\<cr>", 'tx') call assert_match('"echo g:[A-Z]', @:) + + " existence of script-local dict function does not break user function name + " completion + function s:a_dict_func() dict + endfunction + call feedkeys(":call Test_cmdline_complete_user\<Tab>\<Home>\"\<cr>", 'tx') + call assert_match('"call Test_cmdline_complete_user_', @:) + delfunction s:a_dict_func endfunc func Test_cmdline_complete_user_names() |