mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-11-11 12:28:59 +01:00
42 lines
925 B
Plaintext
42 lines
925 B
Plaintext
#compdef tcp_open
|
|
|
|
local curcontext="$curcontext" state line expl
|
|
local -A opt_args
|
|
local -a argargs sesslist
|
|
|
|
case $service in
|
|
(tcp_open)
|
|
argargs=(
|
|
'(-a -f -l)-s[open session(s)]'
|
|
'(-a -f -s)-l[open list of sessions]'
|
|
'(-f -s -l)-a[open session for accept on fd]:fd'
|
|
'(-a -s -l)-f[open session for accept on fd]:fd'
|
|
'-q[quiet mode]'
|
|
'-z[no zle handler]'
|
|
)
|
|
if [[ -n $words[(R)-(a|f)*] ]]; then
|
|
argargs+=(':session:->session')
|
|
elif [[ -n $words[(R)-(l|s)*] ]]; then
|
|
argargs+=('*:session:->session')
|
|
else
|
|
argargs+=(':host:_hosts' ':port:_ports' '*:session:->session')
|
|
fi
|
|
_arguments -C $argargs
|
|
;;
|
|
esac
|
|
|
|
while (( $#state )); do
|
|
case "$state[1]" in
|
|
(sessionlist)
|
|
compset -P '*,'
|
|
;&
|
|
|
|
(session)
|
|
sesslist=(${${${(f)"$(<~/.ztcp_sessions)"}:#[[:space:]]#\#*}/ /:})
|
|
_describe -t sessions 'TCP session' sesslist && return
|
|
;;
|
|
|
|
esac
|
|
shift state
|
|
done
|