diff options
author | Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp> | 2018-07-01 22:41:15 +0900 |
---|---|---|
committer | Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp> | 2018-07-01 22:41:15 +0900 |
commit | bad472928166d118de10d9f03755d8958f158982 (patch) | |
tree | 9133276a4f8652c247f7c9a18647b652e532ffe8 /Completion/Unix/Type | |
parent | d4022e76c116d14856a55f50140b2585dcf0e409 (diff) | |
download | zsh-bad472928166d118de10d9f03755d8958f158982.tar.gz zsh-bad472928166d118de10d9f03755d8958f158982.tar.xz zsh-bad472928166d118de10d9f03755d8958f158982.zip |
43107: add an option to _ttys to complete only open ttys
Use the option in _ps and _watch-snoop
Diffstat (limited to 'Completion/Unix/Type')
-rw-r--r-- | Completion/Unix/Type/_ttys | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/Completion/Unix/Type/_ttys b/Completion/Unix/Type/_ttys index 5e5598570..7408395c8 100644 --- a/Completion/Unix/Type/_ttys +++ b/Completion/Unix/Type/_ttys @@ -4,16 +4,22 @@ # # -d strip /dev/ prefix from matches # -D matches allowed with or without /dev/ prefix +# -o only complete those ttys to which processes are attached local -a ttys expl pre -local stripdev optdev +local stripdev optdev open -zparseopts -D -K -E d=stripdev D=optdev +zparseopts -D -K -E d=stripdev D=optdev o=open -ttys=( /dev/tty?*(N) /dev/pts/^ptmx(N) ) -ttys=( ${ttys#/dev/} ) +if [[ -n $open ]]; then + ttys=( ${(u)${(f)"$(_call_program open-ttys ps -ao tty=)"}%% *} ) + _description open-ttys expl 'open tty' +else + ttys=( /dev/tty?*(N) /dev/pts/^ptmx(N) ) + ttys=( ${ttys#/dev/} ) + _description ttys expl 'tty' +fi [[ -z $stripdev ]] && pre=( -p /dev/ ) -_description ttys expl 'tty' [[ -n $optdev ]] && compadd "$@" "$expl[@]" -M 'r:|/=* r:|=*' -a ttys && return compadd "$@" "$expl[@]" "$pre[@]" -M 'r:|/=* r:|=*' -a ttys |