summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--Completion/Unix/Type/_path_files2
2 files changed, 9 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 45faa0016..64971a413 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,13 @@
 	* unposted: Functions/Zle/move-line-in-buffer: clean
 	the funny characters out of move-line-in-buffer.
 
+2011-06-04  Barton E. Schaefer  <schaefer@zsh.org>
+
+	* 29444: Completion/Unix/Type/_path_files: when called with a
+	pattern to match directories, as from _files with list-dirs-first,
+	do not descend into subdirectories looking for fake files unless
+	some fake files have been defined.
+
 2011-06-04  Peter Stephenson  <p.w.stephenson@ntlworld.com>
 
 	* Completion/Zsh/Context/_brace_parameter, Src/Zle/compcore.c
@@ -14963,5 +14970,5 @@
 
 *****************************************************
 * This is used by the shell to define $ZSH_PATCHLEVEL
-* $Revision: 1.5363 $
+* $Revision: 1.5364 $
 *****************************************************
diff --git a/Completion/Unix/Type/_path_files b/Completion/Unix/Type/_path_files
index 858fe3f74..a8d03efa9 100644
--- a/Completion/Unix/Type/_path_files
+++ b/Completion/Unix/Type/_path_files
@@ -438,7 +438,7 @@ for prepath in "$prepaths[@]"; do
 
     tmp2=( "$tmp1[@]" )
 
-    if [[ "$tpre$tsuf" = */* ]]; then
+    if [[ "$tpre$tsuf" = (#b)*/(*) && -n "$fake${match[1]}" ]]; then
       compfiles -P$cfopt tmp1 accex "$skipped" "$_matcher $matcher[2]" "$sdirs" fake
     elif [[ "$sopt" = *[/f]* ]]; then
       compfiles -p$cfopt tmp1 accex "$skipped" "$_matcher $matcher[2]" "$sdirs" fake "$pats[@]"