diff options
author | Shougo Matsushita <Shougo.Matsu@gmail.com> | 2021-10-21 11:39:53 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-10-21 11:39:53 +0100 |
commit | ae38a9db7770b38889fbf06908cc69d42b463a73 (patch) | |
tree | 730a81a68e6095c38961c0c4912e4eb256adecd2 | |
parent | b811de5d49a23b20df82a80533d0602cda49029e (diff) | |
download | vim-git-ae38a9db7770b38889fbf06908cc69d42b463a73.tar.gz |
patch 8.2.3550: completion() does not work properlyv8.2.3550
Problem: completion() does not work properly.
Solution: Set xp_line and add WILD_HOME_REPLACE. (Shougo Matsushita,
closes #9016)
-rw-r--r-- | src/cmdexpand.c | 3 | ||||
-rw-r--r-- | src/testdir/test_cmdline.vim | 15 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 19 insertions, 1 deletions
diff --git a/src/cmdexpand.c b/src/cmdexpand.c index c98e126a5..71c4f690c 100644 --- a/src/cmdexpand.c +++ b/src/cmdexpand.c @@ -978,6 +978,7 @@ set_one_cmd_context( ExpandInit(xp); xp->xp_pattern = buff; + xp->xp_line = buff; xp->xp_context = EXPAND_COMMANDS; // Default until we get past command ea.argt = 0; @@ -2891,7 +2892,7 @@ f_getcompletion(typval_T *argvars, typval_T *rettv) expand_T xpc; int filtered = FALSE; int options = WILD_SILENT | WILD_USE_NL | WILD_ADD_SLASH - | WILD_NO_BEEP; + | WILD_NO_BEEP | WILD_HOME_REPLACE; if (in_vim9script() && (check_for_string_arg(argvars, 0) == FAIL diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index 9c21a205f..87ae6faa2 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -305,6 +305,11 @@ func Test_getcompletion() let l = getcompletion('NoMatch', 'dir') call assert_equal([], l) + if glob('~/*') !=# '' + let l = getcompletion('~/', 'dir') + call assert_true(l[0][0] ==# '~') + endif + let l = getcompletion('exe', 'expression') call assert_true(index(l, 'executable(') >= 0) let l = getcompletion('kill', 'expression') @@ -418,6 +423,16 @@ func Test_getcompletion() let l = getcompletion('call paint', 'cmdline') call assert_equal([], l) + func T(a, c, p) + return "oneA\noneB\noneC" + endfunc + command -nargs=1 -complete=custom,T MyCmd + let l = getcompletion('MyCmd ', 'cmdline') + call assert_equal(['oneA', 'oneB', 'oneC'], l) + + delcommand MyCmd + delfunc T + " For others test if the name is recognized. let names = ['buffer', 'environment', 'file_in_path', 'mapping', 'tag', 'tag_listfiles', 'user'] if has('cmdline_hist') diff --git a/src/version.c b/src/version.c index 5df626a97..e4f72bd67 100644 --- a/src/version.c +++ b/src/version.c @@ -758,6 +758,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3550, +/**/ 3549, /**/ 3548, |