aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2018-07-10 13:33:18 -0400
committerJustin M. Keyes <justinkz@gmail.com>2018-07-10 19:33:18 +0200
commit2574f299e55b85cb9294cedfccda35ad9b2aec21 (patch)
tree54959614e936d7def4c5398ce1810582ff735093
parentd241f278d3d9e26f17c9b67ec363c7ed498a4e0f (diff)
downloadrneovim-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.c27
-rw-r--r--src/nvim/testdir/test_find_complete.vim6
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