summaryrefslogtreecommitdiff
path: root/Completion/Base/_arguments
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Base/_arguments')
-rw-r--r--Completion/Base/_arguments21
1 files changed, 12 insertions, 9 deletions
diff --git a/Completion/Base/_arguments b/Completion/Base/_arguments
index da7a7ad4a..a5a39112a 100644
--- a/Completion/Base/_arguments
+++ b/Completion/Base/_arguments
@@ -223,15 +223,18 @@ if (( $# )) && comparguments -i "$autod" "$@"; then
fi
if [[ "$action" = -\>* ]]; then
- comparguments -W line opt_args
- state=( "$state[@]" "${${action[3,-1]##[ ]#}%%[ ]#}" )
- if [[ -n "$usecc" ]]; then
- curcontext="${oldcontext%:*}:$subc"
- else
- context=( "$context[@]" "$subc" )
- fi
- compstate[restore]=''
- aret=yes
+ action="${${action[3,-1]##[ ]#}%%[ ]#}"
+ if (( ! $state[(I)$action] )); then
+ comparguments -W line opt_args
+ state=( "$state[@]" "$action" )
+ if [[ -n "$usecc" ]]; then
+ curcontext="${oldcontext%:*}:$subc"
+ else
+ context=( "$context[@]" "$subc" )
+ fi
+ compstate[restore]=''
+ aret=yes
+ fi
else
if [[ -z "$local" ]]; then
local line