about summary refs log tree commit diff
path: root/Completion/Core/_files
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>2000-01-27 20:09:30 +0000
committerTanaka Akira <akr@users.sourceforge.net>2000-01-27 20:09:30 +0000
commitb377d671103b8e16e337e76b9aeb92512d136782 (patch)
treedeb865d175e318fa8e2f1cb067b326c0b863f312 /Completion/Core/_files
parentb4d7e17de61045df9b7f17486ba7db6d8c1bd311 (diff)
downloadzsh-b377d671103b8e16e337e76b9aeb92512d136782.tar.gz
zsh-b377d671103b8e16e337e76b9aeb92512d136782.tar.xz
zsh-b377d671103b8e16e337e76b9aeb92512d136782.zip
zsh-workers/9441
Diffstat (limited to 'Completion/Core/_files')
-rw-r--r--Completion/Core/_files34
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