diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Completion/Unix/Type/_files | 6 |
2 files changed, 10 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index 806520d45..f5a89b7e7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2014-12-08 Peter Stephenson <p.stephenson@samsung.com> + + * 33843: Completion/Unix/Type/_files: minor optimisation for + recursive-files. + 2014-12-07 Barton E. Schaefer <schaefer@zsh.org> * 33912: Completion/Unix/Command/_od: fix filename default case diff --git a/Completion/Unix/Type/_files b/Completion/Unix/Type/_files index 0f6fcd6ff..e628cb39e 100644 --- a/Completion/Unix/Type/_files +++ b/Completion/Unix/Type/_files @@ -121,9 +121,13 @@ for def in "$pats[@]"; do if _path_files -g "$pat" "$opts[@]" "$expl[@]"; then ret=0 elif [[ $PREFIX$SUFFIX != */* ]] && zstyle -a ":completion:${curcontext}:$tag" recursive-files rfiles; then + local subtree for rfile in $rfiles; do if [[ $PWD/ = ${~rfile} ]]; then - for prepath in **/*(/); do + if [[ -z $subtree ]]; then + subtree=( **/*(/) ) + fi + for prepath in $subtree; do oprefix=$PREFIX PREFIX=$prepath/$PREFIX _path_files -g "$pat" "$opts[@]" "$expl[@]" && ret=0 |