about summary refs log tree commit diff
path: root/Completion/Base/Utility
diff options
context:
space:
mode:
authorSven Wischnowsky <wischnow@users.sourceforge.net>2002-01-21 16:13:15 +0000
committerSven Wischnowsky <wischnow@users.sourceforge.net>2002-01-21 16:13:15 +0000
commitf463b09b133f8c798750334558b99d633c1a2219 (patch)
tree0f203d91189b49d084fee0cd32d6dc77b9a935b2 /Completion/Base/Utility
parent4f6493aff1b41e314c2ca6adf3c374b093291c21 (diff)
downloadzsh-f463b09b133f8c798750334558b99d633c1a2219.tar.gz
zsh-f463b09b133f8c798750334558b99d633c1a2219.tar.xz
zsh-f463b09b133f8c798750334558b99d633c1a2219.zip
allow arguments to be given to functions used by compdef (actually, the strings are eval'uated, so this should be powerful enough) (16472)
Diffstat (limited to 'Completion/Base/Utility')
-rw-r--r--Completion/Base/Utility/_contexts10
1 files changed, 8 insertions, 2 deletions
diff --git a/Completion/Base/Utility/_contexts b/Completion/Base/Utility/_contexts
index 680f2019f..f0e5ba874 100644
--- a/Completion/Base/Utility/_contexts
+++ b/Completion/Base/Utility/_contexts
@@ -7,11 +7,17 @@
 # `_contexts -math-' to get the completions that would be generated for a
 # mathematical context.
 
-local i tmp ret=1 service
+local i tmp ret=1 service or
+
+if [[ $1 = -o ]]; then
+  or=yes
+  shift
+fi
 
 for i; do
   tmp="$_comps[$i]"
-  [[ -z "$tmp" ]] || service="${_services[$i]:-$i}" && "$tmp" && ret=0
+  [[ -n "$tmp" ]] && service="${_services[$i]:-$i}" && eval "$tmp" && ret=0
+  [[ -n "$or" && ret -eq 0 ]] && return 0
 done
 
 return ret