#compdef zpty local state line list names expl _arguments -C -s \ '(-d -w -r -L)-e[echo input characters]' \ '(-d -w -r -L)-b[io to pseudo-terminal blocking]' \ '(-e -b -w -r -L)-d[delete command]:*:name:->name' \ '(-e -b -d -r -L)-w[send string to command]:name:->name:*:strings to write' \ '(-e -b -d -w -L *)-r[read string from command]:name:->name:param:_parameters' \ '(-e -b -d -w -r)-L[list defined commands as calls]' \ '(-r)*::args:_normal' if [[ $state = name ]] && _wanted names; then list=( ${${(f)"$(zpty)"}#*\) } ) names=( ${list%%:*} ) if zstyle -T ":completion:${curcontext}" verbose; then zformat -a list ' --' ${${(f)"$(zpty)"}#*\) } _all_labels names expl 'zpty command names' compadd -d list - "$names[@]" else _all_labels names expl 'zpty command names' compadd - "$names[@]" fi fi