about summary refs log tree commit diff
path: root/Completion/Core/_normal
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>1999-08-12 21:25:12 +0000
committerTanaka Akira <akr@users.sourceforge.net>1999-08-12 21:25:12 +0000
commitd00f73c3672b2783f14e3a27b35d34c218657506 (patch)
tree55bd4876283ca101a0d99f790c0c8c7174efa44d /Completion/Core/_normal
parent98aaef0a46c8d9d1c34dd939fd8a470791aed2ee (diff)
downloadzsh-d00f73c3672b2783f14e3a27b35d34c218657506.tar.gz
zsh-d00f73c3672b2783f14e3a27b35d34c218657506.tar.xz
zsh-d00f73c3672b2783f14e3a27b35d34c218657506.zip
zsh-workers/7420
Diffstat (limited to 'Completion/Core/_normal')
-rw-r--r--Completion/Core/_normal28
1 files changed, 18 insertions, 10 deletions
diff --git a/Completion/Core/_normal b/Completion/Core/_normal
index 6da653021..d4e948e41 100644
--- a/Completion/Core/_normal
+++ b/Completion/Core/_normal
@@ -29,17 +29,19 @@ fi
 
 # See if there are any matching pattern completions.
 
-for i in "$_patcomps[@]"; do
-  pat="${i% *}"
-  val="${i#* }"
-  if [[ "$cmd1" == $~pat || "$cmd2" == $~pat ]]; then
-    "$val" && ret=0
-    if (( $+_compskip )); then
-      unset _compskip
-      return ret
+if [[ "$_compskip" != *patterns* ]]; then
+  for i in "$_patcomps[@]"; do
+    pat="${i% *}"
+    val="${i#* }"
+    if [[ "$cmd1" == $~pat || "$cmd2" == $~pat ]]; then
+      "$val" && ret=0
+      if [[ "$_compskip" = *patterns* || "$_compskip" = all ]]; then
+        unset _compskip
+        return ret
+      fi
     fi
-  fi
-done
+  done
+fi
 
 # Now look up the two names in the normal completion array.
 
@@ -54,9 +56,15 @@ fi
 # And generate the matches, probably using default completion.
 
 if [[ -z "$comp" ]]; then
+  if [[ "$_compskip" = *default* ]]; then
+    unset _compskip
+    return 1
+  fi
   name=-default-
   comp="$_comps[-default-]"
 fi
 [[ -z "$comp" ]] || "$comp" && ret=0
 
+unset _compskip
+
 return ret