#autoload local name gropt=-J format gname hidden hide match opts opts=() if [[ "$1" = -([12]|)[VJ] ]]; then gropt="$1" shift fi _lastdescr=( "$_lastdescr[@]" "$3" ) _setup "$1" name="$2" zstyle -s ":completion:${curcontext}:$1" format format || zstyle -s ":completion:${curcontext}:descriptions" format format zstyle -s ":completion:${curcontext}:$1" hidden hidden if [[ "$hidden" = (all|yes|true|1|on) ]]; then [[ "$hidden" = all ]] && format='' opts=(-n) fi zstyle -s ":completion:${curcontext}:$1" group-name gname && [[ -z "$gname" ]] && gname="$1" zstyle -s ":completion:${curcontext}:$1" matcher match && opts=($opts -M "${(q)match}") [[ -n "$_matcher" ]] && opts=($opts -M "${(q)_matcher}") if zstyle -a ":completion:${curcontext}:$1" ignored-patterns _comp_ignore; then opts=( $opts -F _comp_ignore) else _comp_ignore=() fi shift 2 [[ -n "$format" ]] && zformat -f format "$format" "d:$1" "${(@)argv[2,-1]}" if [[ -n "$gname" ]]; then if [[ -n "$format" ]]; then eval "${name}=($opts $gropt ${(q)gname} -X \"${format}\")" else eval "${name}=($opts $gropt ${(q)gname})" fi else if [[ -n "$format" ]]; then eval "${name}=($opts $gropt -default- -X \"${format}\")" else eval "${name}=($opts $gropt -default-)" fi fi return 0