43107: add an option to _ttys to complete only open ttys

Use the option in _ps and _watch-snoop
This commit is contained in:
Jun-ichi Takimoto 2018-07-01 22:41:15 +09:00
parent d4022e76c1
commit bad4729281
4 changed files with 20 additions and 8 deletions

View file

@ -1,3 +1,9 @@
2018-07-01 Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
* 43107: Completion/Unix/Type/_ttys, Completion/Unix/Command/_ps,
Completion/BSD/Command/_watch-snoop: add an option to _ttys to
complete only open ttys, and use it in _ps and _watch-snoop.
2018-06-29 Peter Stephenson <p.stephenson@samsung.com>
* users/23519: README, Completion/Unix/Type/_remote_files: Use tag

View file

@ -10,4 +10,4 @@ _arguments -w -S -s : \
"-o[reconnect on overflow]" \
"-t[print date and time at start]" \
"-W[allow write access to observed tty]" \
":tty device:_ttys -D"
"(-): : _ttys -Do"

View file

@ -31,7 +31,7 @@ args=(
'*-G+[select processes by real group]:group:_sequence -s , _groups'
'*-g+[select processes by effective group or session]:group:_sequence -s , _groups'
'*-s+[select processes by session leaders]:session leader:_sequence -s , _pids'
'*-t+[select processes by attached terminal]:tty:_sequence -s , _ttys -D'
'*-t+[select processes by attached terminal]:tty:_sequence -s , _ttys -Do'
'*-u+[select processes by effective user]:user:_sequence -s , _users'
'*-U+[select processes by real user]:user:_sequence -s , _users'
'-o+[specify output format]:property:_sequence -s , _ps_props -'
@ -211,7 +211,7 @@ if (( CURRENT > 1 )) && [[ $OSTYPE != (solaris*|linux-gnu) ||
*J) _sequence _jails -0 && return ;;
*[MNW]) _files && return ;;
*t)
_wanted -C option-t-1 ttys expl tty _sequence -s , _ttys -D && return
_wanted -C option-t-1 ttys expl tty _sequence -s , _ttys -Do && return
;;
*[pq]) _wanted -C "option-${words[CURRENT-1][-1]}-1" processes \
expl 'process ID' _sequence -s , _pids && return ;;

View file

@ -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