diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 2000-01-27 20:09:30 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 2000-01-27 20:09:30 +0000 |
commit | b377d671103b8e16e337e76b9aeb92512d136782 (patch) | |
tree | deb865d175e318fa8e2f1cb067b326c0b863f312 /Completion/Core | |
parent | b4d7e17de61045df9b7f17486ba7db6d8c1bd311 (diff) | |
download | zsh-b377d671103b8e16e337e76b9aeb92512d136782.tar.gz zsh-b377d671103b8e16e337e76b9aeb92512d136782.tar.xz zsh-b377d671103b8e16e337e76b9aeb92512d136782.zip |
zsh-workers/9441
Diffstat (limited to 'Completion/Core')
-rw-r--r-- | Completion/Core/_files | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/Completion/Core/_files b/Completion/Core/_files index 1b16f4e67..2a2f67ef0 100644 --- a/Completion/Core/_files +++ b/Completion/Core/_files @@ -1,6 +1,7 @@ #autoload local opts opt type=file glob group gopts dopts aopts tmp _file_pat_checked=yes +local hasign ign opts=() group=() @@ -9,11 +10,12 @@ dopts=(-/) aopts=(-f) while getopts "P:S:qr:R:W:F:J:V:X:f/g:M:12n" opt; do case "$opt" in - /) type="${type}dir" ;; - g) type="${type}glob"; gopts=(-g "$OPTARG") ;; - [qn12]) opts=("$opts[@]" "-$opt" ) ;; - [JV]) group=( "-$opt" "$OPTARG") ;; - [^f]) opts=("$opts[@]" "-$opt" "$OPTARG") ;; + /) type="${type}dir" ;; + g) type="${type}glob"; gopts=(-g "$OPTARG") ;; + [qn12]) opts=("$opts[@]" "-$opt" ) ;; + [JV]) group=( "-$opt" "$OPTARG") ;; + F) opts=("$opts[@]" "-$opt" "$OPTARG"); hasign=yes ;; + [^f]) opts=("$opts[@]" "-$opt" "$OPTARG") ;; esac done @@ -60,32 +62,44 @@ while _tags; do if (( $#group )); then group[2]=all-files _setup all-files + [[ -z "$hasign" ]] && + zstyle -a ":completion${curcontext}:all-files" ignored-patterns _comp_ignore && + ign=(-F _comp_ignore) fi - _path_files "$opts[@]" "$aopts[@]" + _path_files "$opts[@]" "$ign[@]" "$aopts[@]" return elif _requested directories; then if _requested globbed-files; then if (( $#group )); then group[2]=globbed-files _setup globbed-files + [[ -z "$hasign" ]] && + zstyle -a ":completion${curcontext}:all-files" ignored-patterns _comp_ignore && + ign=(-F _comp_ignore) fi - _path_files "$opts[@]" "$dopts[@]" "$gopts[@]" && return 0 + _path_files "$opts[@]" "$ign[@]" "$dopts[@]" "$gopts[@]" && return 0 else if (( $#group )); then group[2]=directories _setup directories + [[ -z "$hasign" ]] && + zstyle -a ":completion${curcontext}:all-files" ignored-patterns _comp_ignore && + ign=(-F _comp_ignore) fi - _path_files "$opts[@]" "$dopts[@]" && return 0 + _path_files "$opts[@]" "$ign[@]" "$dopts[@]" && return 0 fi elif _requested globbed-files; then if (( $#group )); then group[2]=globbed-files _setup globbed-files + [[ -z "$hasign" ]] && + zstyle -a ":completion${curcontext}:all-files" ignored-patterns _comp_ignore && + ign=(-F _comp_ignore) fi if [[ "$type" = (*dir*glob*|*glob*dir*) ]]; then - _path_files "$opts[@]" "$dopts[@]" "$gopts[@]" && return 0 + _path_files "$opts[@]" "$ign[@]" "$dopts[@]" "$gopts[@]" && return 0 else - _path_files "$opts[@]" "$gopts[@]" && return 0 + _path_files "$opts[@]" "$ign[@]" "$gopts[@]" && return 0 fi fi done |