From 1d2dd33c0ac451f04308b8edd8528ac7ca90cf05 Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Mon, 17 Aug 2015 12:25:44 +0200 Subject: 36165: simplify file-patterns default to a single pattern --- ChangeLog | 5 +++++ Completion/Unix/Type/_files | 48 ++++++--------------------------------------- 2 files changed, 11 insertions(+), 42 deletions(-) diff --git a/ChangeLog b/ChangeLog index 11794708b..e44a4267c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2015-08-17 Oliver Kiddle + + * 36165: Completion/Unix/Type/_files: simplify file-patterns + default to a single pattern + 2015-08-17 Barton E. Schaefer * unposted: Functions/Zle/url-quote-magic: mention diff --git a/Completion/Unix/Type/_files b/Completion/Unix/Type/_files index a8ba9b3ce..fe0780a57 100644 --- a/Completion/Unix/Type/_files +++ b/Completion/Unix/Type/_files @@ -33,6 +33,8 @@ if (( $tmp[(I)-g*] )); then # add `#q' to the beginning of any glob qualifier if not there already [[ "$glob" = (#b)(*\()([^\|\~]##\)) && $match[2] != \#q* ]] && glob="${match[1]}#q${match[2]}" +elif [[ $type = */* ]]; then + glob="*(-/)" fi tmp=$opts[(I)-F] if (( tmp )); then @@ -51,59 +53,21 @@ else fi if zstyle -a ":completion:${curcontext}:" file-patterns tmp; then - [[ "$type" = */* ]] && glob="$glob,*(-/)" pats=() for i in ${tmp//\%p/${${glob:-\*}//:/\\:}}; do if [[ $i = *[^\\]:* ]]; then - pats=( "$pats[@]" " $i " ) + pats+=( " $i " ) else - pats=( "$pats[@]" " ${i}:files " ) + pats+=( " ${i}:files " ) fi done elif zstyle -t ":completion:${curcontext}:" list-dirs-first; then - if [[ "$type" = *g* ]]; then - - # add `^-/' after `#q' glob qualifier if not there already - if [[ "$glob" = (#b)(*\(\#q)(*\)) ]]; then - [[ $match[2] != \^-/* ]] && - glob="${match[1]}^-/,${match[2]}" - else - glob="$glob(#q^-/)" - fi - - pats=( " *(-/):directories:directories ${glob//:/\\:}:globbed-files" ) - elif [[ "$type" = */* ]] then - pats=( '*(-/):directories ' '*:all-files ' ) - else - pats=( '*(-/):directories:directories *(^-/):other-files ' ) - fi + pats=( " *(-/):directories:directory ${${glob:-*}//:/\\:}(#q^-/):globbed-files" '*:all-files' ) else - if [[ "$type" = *g* ]]; then - # People prefer to have directories shown on first try as default. # Even if the calling function didn't use -/. - # - # if [[ "$type" = */* ]]; then - - pats=( " ${glob//:/\\:}:globbed-files *(-/):directories" '*:all-files ' - - ### We could allow _next_tags to offer only globbed-files or directories - ### by adding: - ### " ${glob//:/\\:}:only-globbed-files " ' *(-/):only-directories ' - - ) - - # else - # pats=( " ${glob//:/\\:}:globbed-files " - # '*(-/):directories ' '*:all-files ' ) - # fi - - elif [[ "$type" = */* ]]; then - pats=( '*(-/):directories ' '*:all-files ' ) - else - pats=( '*:all-files ' ) - fi + pats=( "${${glob:-*}//:/\\:}:globbed-files *(-/):directories" '*:all-files ' ) fi tried=() -- cgit 1.4.1