summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Completion/Unix/Type/_files48
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 <opk@zsh.org>
+
+ * 36165: Completion/Unix/Type/_files: simplify file-patterns
+ default to a single pattern
+
2015-08-17 Barton E. Schaefer <schaefer@zsh.org>
* 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=()