summaryrefslogtreecommitdiff
path: root/Completion/Base/Utility/_arguments
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Base/Utility/_arguments')
-rw-r--r--Completion/Base/Utility/_arguments7
1 files changed, 5 insertions, 2 deletions
diff --git a/Completion/Base/Utility/_arguments b/Completion/Base/Utility/_arguments
index 826d5b5c2..0cfc60b54 100644
--- a/Completion/Base/Utility/_arguments
+++ b/Completion/Base/Utility/_arguments
@@ -335,9 +335,11 @@ if (( $# )) && comparguments -i "$autod" "$singopt[@]" "$@"; then
[[ -z "$hasopts" &&
-z "$matched" &&
( -z "$aret" || "$PREFIX" = "$origpre" ) ]] &&
- { ! zstyle -T ":completion:${curcontext}:options" prefix-needed ||
+ { ! zstyle -T ":completion:${oldcontext%:*}:options" prefix-needed ||
[[ "$origpre" = [-+]* || -z "$aret$mesg$tried" ]] } ; then
- local prevpre="$PREFIX" previpre="$IPREFIX"
+ local prevpre="$PREFIX" previpre="$IPREFIX" prevcontext="$curcontext"
+
+ curcontext="${oldcontext%:*}:options"
hasopts=yes
@@ -389,6 +391,7 @@ if (( $# )) && comparguments -i "$autod" "$singopt[@]" "$@"; then
fi
PREFIX="$prevpre"
IPREFIX="$previpre"
+ curcontext="$prevcontext"
fi
[[ -n "$tried" && "${${alwopt:+$origpre}:-$PREFIX}" != [-+]* ]] && break
done