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