diff options
Diffstat (limited to 'Completion/Unix/Type/_ttys')
-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 |