diff options
Diffstat (limited to 'Completion/Zsh')
-rw-r--r-- | Completion/Zsh/Command/_zpty | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/Completion/Zsh/Command/_zpty b/Completion/Zsh/Command/_zpty new file mode 100644 index 000000000..4a02952f7 --- /dev/null +++ b/Completion/Zsh/Command/_zpty @@ -0,0 +1,58 @@ +#compdef zpty + +local state line list names expl curcontext="$curcontext" +typeset -A opt_args + + +_arguments -C -s -S \ + '(-r -w -L -d)-e[echo input characters]' \ + '(-r -w -L -d)-b[io to pseudo-terminal blocking]' \ + '(-r -w -L -e -b)-d[delete command]:*:name:->name' \ + '(-r -L -e -b -d)-w[send string to command]:name:->name:*:strings to write' \ + '(: -r -w -e -b -d)-L[list defined commands as calls]' \ + '(: -w -L -e -b -d)-r[read string from command]:name:->name:param: _vars:pattern:' \ + '(-r -w -L -d):zpty command name:' \ + '(-r -w -L -d):cmd: _command_names -e' \ + '(-r -w -L -d)*::args:_precommand' && return 0 + +# One could use sets, but that's more expensive and zpty is simple enough. +# +# _arguments -C -s -S \ +# - read \ +# '-r[read string from command]' \ +# ':name:->name' \ +# ':param: _vars' \ +# ':pattern:' \ +# - write \ +# '-w[send string to command]' \ +# ':name:->name' \ +# '*:strings to write' \ +# - list \ +# '-L[list defined commands as calls]' \ +# - delete \ +# '-d[delete command]' \ +# '*:name:->name' \ +# - start \ +# '-e[echo input characters]' \ +# '-b[io to pseudo-terminal blocking]' \ +# ':zpty command name:' \ +# ':cmd: _command_names -e' \ +# '*::args:_precommand' && 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 name' compadd -d list -a names + else + _wanted names expl 'zpty command name' compadd -a names + fi +else + return 1 +fi |