#compdef compadd local curcontext="$curcontext" state line ret=1 typeset -A opt_args _arguments -C -s -S -A "-*" \ '-P+[specify prefix]:prefix' \ '-S+[specify suffix]:suffix' \ '-p+[specify hidden prefix]:hidden prefix' \ '-s+[specify hidden suffix]:hidden suffix' \ '-i+[specify ignored prefix]:ignored prefix' \ '-I+[specify ignored suffix]:ignored suffix' \ '(-k)-a[matches are elements of specified arrays]' \ '(-a)-k[matches are keys of specified associative arrays]' \ '-d+[specify display strings]:array:_parameters -g "*array*"' \ '-l[list display strings one per line, not in columns]' \ '-o[specify order for matches by match string not by display string]:: : _values -s , order "match[order by match not by display string]" "nosort[matches are pre-ordered]" "numeric[order numerically]" "reverse[order backwards]"' \ '(-1 -E)-J+[specify match group]:group' \ '!-V+:group' \ '(-J -E)-1[remove only consecutive duplicates from group]' \ '-2[preserve all duplicates]' \ '(-x)-X[specify explanation]:explanation' \ '(-X)-x[specify unconditional explanation]:explanation' \ '-q[make suffix autoremovable]' \ '-r+[specify character class for suffix autoremoval]:character class' \ '-R+[specify function for suffix autoremoval]:function:_functions' \ '-f[mark matches as being files]' \ '-e[mark matches as being parameters]' \ '-W[specify location for matches marked as files]' \ '-F+[specify array of ignore patterns]:array:_parameters -g "*array*"' \ '-Q[disable quoting of possible completions]' \ '*-M[specify matching specifications]' \ '-n[hide matches in completion listing]' \ '-U[disable internal matching of completion candidates]' \ '-O+[populate array with matches instead of adding them]:array:_parameters -g "*array*"' \ '-A+[populate array with expanded matches instead of adding them]:array:_parameters -g "*array*"' \ '-D+[delete elements from array corresponding to non-matching candidates]:array:_parameters -g "*array*"' \ '-C[add special match that expands to all other matches]' \ '(-1 -J)-E+[add specified number of display only matches]:number' \ '*:candidate:->candidates' && ret=0 if [[ -n $state ]]; then if (( $+opt_args[-a] )); then _parameters -g "*array*" && ret=0 elif (( $+opt_args[-k] )); then _parameters -g "*assoc*" && ret=0 else _message -e candidates candidate fi fi return ret