diff options
author | Sven Wischnowsky <wischnow@users.sourceforge.net> | 2000-05-31 06:11:07 +0000 |
---|---|---|
committer | Sven Wischnowsky <wischnow@users.sourceforge.net> | 2000-05-31 06:11:07 +0000 |
commit | 3beeb8a6fddac8af7dd2a31335c2ce97c3d60e82 (patch) | |
tree | 6f6874e655bfd4f648f298c98ab64d1a0c2fed41 /Completion/Base/_arguments | |
parent | 64d9b8310594840494311dde271e93c7668ed807 (diff) | |
download | zsh-3beeb8a6fddac8af7dd2a31335c2ce97c3d60e82.tar.gz zsh-3beeb8a6fddac8af7dd2a31335c2ce97c3d60e82.tar.xz zsh-3beeb8a6fddac8af7dd2a31335c2ce97c3d60e82.zip |
avoid reporting the same ->state more than once (11678)
Diffstat (limited to 'Completion/Base/_arguments')
-rw-r--r-- | Completion/Base/_arguments | 21 |
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 |