#compdef tr gtr local curcontext="$curcontext" state line expl ret=1 local args variant k local -A descr descr=( -c '[complement characters specified by first string]' -d '[delete specified characters from input]' -s '[squeeze repeated instances of character to a single instance]' ) _pick_variant -r variant gnu=GNU $OSTYPE --version case $variant in gnu) args=( '(-c -C --complement)'{-c,-C,--complement}"${descr[-c]}" '(-d --delete 2)'{-d,--delete}"${descr[-d]}" '(-s --squeeze-repeats)'{-s,--squeeze-repeats}"${descr[-s]}" '(- 1 2)--help[display help information]' '(- 1 2)--version[display version information]' ) ;; darwin*|dragonfly*|*bsd*) args+=( "(-c)-C$descr[-c]" ) ;| darwin*|dragonfly*|freebsd*) args+=( '-u[guarantee that output is unbuffered]' ) ;| *) for k in c d s; do args+=( -$k$descr[-$k] ) done ;; esac _arguments -C -s $args \ '1:character set:->chsets' \ '2:character set:->chsets' && ret=0 if [[ -n $state ]]; then if compset -P '*\[:'; then _wanted characters expl 'character class' \ compadd -S ":${${QIPREFIX:+]}:-\]}$compstate[quote] " \ alnum alpha blank cntrl digit graph lower print punct space upper \ xdigit && return elif compset -P '*\\'; then _describe -t characters character \ '(\\\\:backslash a:alert b:backspace f:form\ feed n:new\ line r:return t:tab v:vertical\ tab)' -S '' && return fi _message -e characters 'character set' fi return ret