diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2018-07-10 13:33:18 -0400 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2018-07-10 19:33:18 +0200 |
commit | 2574f299e55b85cb9294cedfccda35ad9b2aec21 (patch) | |
tree | 54959614e936d7def4c5398ce1810582ff735093 | |
parent | d241f278d3d9e26f17c9b67ec363c7ed498a4e0f (diff) | |
download | rneovim-2574f299e55b85cb9294cedfccda35ad9b2aec21.tar.gz rneovim-2574f299e55b85cb9294cedfccda35ad9b2aec21.tar.bz2 rneovim-2574f299e55b85cb9294cedfccda35ad9b2aec21.zip |
vim-patch:8.0.1464: add slash when completing directory #8684
Problem: Completing directory after :find does not add slash.
Solution: Adjust the flags for globpath(). (Genki Sky)
https://github.com/vim/vim/commit/8a37b032895b40dd6953280c33585bcba0c7ef8b
-rw-r--r-- | src/nvim/path.c | 27 | ||||
-rw-r--r-- | src/nvim/testdir/test_find_complete.vim | 6 |
2 files changed, 22 insertions, 11 deletions
diff --git a/src/nvim/path.c b/src/nvim/path.c index b1e1bf3b2f..d5c636ff08 100644 --- a/src/nvim/path.c +++ b/src/nvim/path.c @@ -1051,30 +1051,35 @@ const char *gettail_dir(const char *const fname) * result in "gap". * Returns the total number of matches. */ -static int -expand_in_path ( - garray_T *gap, - char_u *pattern, - int flags /* EW_* flags */ +static int expand_in_path( + garray_T *const gap, + char_u *const pattern, + const int flags // EW_* flags ) { - char_u *curdir; garray_T path_ga; - char_u *paths = NULL; - curdir = xmalloc(MAXPATHL); + char_u *const curdir = xmalloc(MAXPATHL); os_dirname(curdir, MAXPATHL); ga_init(&path_ga, (int)sizeof(char_u *), 1); expand_path_option(curdir, &path_ga); xfree(curdir); - if (GA_EMPTY(&path_ga)) + if (GA_EMPTY(&path_ga)) { return 0; + } - paths = ga_concat_strings(&path_ga); + char_u *const paths = ga_concat_strings(&path_ga); ga_clear_strings(&path_ga); - globpath(paths, pattern, gap, (flags & EW_ICASE) ? WILD_ICASE : 0); + int glob_flags = 0; + if (flags & EW_ICASE) { + glob_flags |= WILD_ICASE; + } + if (flags & EW_ADDSLASH) { + glob_flags |= WILD_ADD_SLASH; + } + globpath(paths, pattern, gap, glob_flags); xfree(paths); return gap->ga_len; diff --git a/src/nvim/testdir/test_find_complete.vim b/src/nvim/testdir/test_find_complete.vim index 1019246404..7592b16192 100644 --- a/src/nvim/testdir/test_find_complete.vim +++ b/src/nvim/testdir/test_find_complete.vim @@ -88,6 +88,12 @@ func Test_find_complete() call feedkeys(":find f\t\n", "xt") call assert_equal('Holy Grail', getline(1)) + " Test that find completion on directory appends a slash + call feedkeys(":find in/pa\tfile.txt\n", "xt") + call assert_equal('E.T.', getline(1)) + call feedkeys(":find ./i\tstuff.txt\n", "xt") + call assert_equal('Another Holy Grail', getline(1)) + " Test shortening of " " foo/x/bar/voyager.txt |