summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <bram@vim.org>2010-08-15 13:29:11 +0200
committerBram Moolenaar <bram@vim.org>2010-08-15 13:29:11 +0200
commit315438f350d8dd3398398e620fb6c4650a77d0be (patch)
tree85576c6bea3e21c05026a626e7d486d5643d570c
parent1aed538a6dd2f7c27c5272edfe05a54fe194e895 (diff)
downloadvim-315438f350d8dd3398398e620fb6c4650a77d0be.tar.gz
Two fixes for :find completion and more testing. (Nazri Ramliy)
-rw-r--r--src/misc1.c16
-rw-r--r--src/testdir/test73.in8
-rw-r--r--src/testdir/test73.ok1
3 files changed, 22 insertions, 3 deletions
diff --git a/src/misc1.c b/src/misc1.c
index c4a6015a..fd178c99 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -9722,6 +9722,9 @@ gen_expand_wildcards(num_pat, pat, num_file, file, flags)
char_u *p;
static int recursive = FALSE;
int add_pat;
+#if defined(FEAT_SEARCHPATH)
+ int did_expand_in_path = FALSE;
+#endif
/*
* expand_env() is called to expand things like "~user". If this fails,
@@ -9808,12 +9811,19 @@ gen_expand_wildcards(num_pat, pat, num_file, file, flags)
if (mch_has_exp_wildcard(p))
{
#if defined(FEAT_SEARCHPATH)
- if (*p != '.' && !vim_ispathsep(*p) && (flags & EW_PATH))
+ if ((flags & EW_PATH)
+ && !mch_isFullName(p)
+ && !(p[0] == '.'
+ && (vim_ispathsep(p[1])
+ || (p[1] == '.' && vim_ispathsep(p[2]))))
+ )
{
- /* recursiveness is OK here */
+ /* :find completion where 'path' is used.
+ * Recursiveness is OK here. */
recursive = FALSE;
add_pat = expand_in_path(&ga, p, flags);
recursive = TRUE;
+ did_expand_in_path = TRUE;
}
else
#endif
@@ -9838,7 +9848,7 @@ gen_expand_wildcards(num_pat, pat, num_file, file, flags)
}
#if defined(FEAT_SEARCHPATH)
- if (ga.ga_len > 0 && (flags & EW_PATH))
+ if (did_expand_in_path && ga.ga_len > 0 && (flags & EW_PATH))
uniquefy_paths(&ga, p);
#endif
if (p != pat[i])
diff --git a/src/testdir/test73.in b/src/testdir/test73.in
index 3518e808..5472247e 100644
--- a/src/testdir/test73.in
+++ b/src/testdir/test73.in
@@ -150,6 +150,14 @@ SVoyager 2:w
:exec "cd " . cwd . "/Xfind/in"
:find file
:exec "w >>" . test_out
+:" Test for relative to current buffer 'path' item
+:exec "cd " . cwd . "/Xfind/"
+:set path=./path
+:" Open the file where Jimmy Hoffa is found
+:e in/file.txt
+:" Find the file containing 'E.T.' in the Xfind/in/path directory
+:find file
+:exec "w >>" . test_out
:q
:exec "cd " . cwd
:call DeleteDirectory("Xfind")
diff --git a/src/testdir/test73.ok b/src/testdir/test73.ok
index 4dd48fba..366f9516 100644
--- a/src/testdir/test73.ok
+++ b/src/testdir/test73.ok
@@ -16,3 +16,4 @@ Voyager 1
Voyager 1
Voyager 2
Jimmy Hoffa
+E.T.