1#compdef tcp_open 2 3local curcontext="$curcontext" state line expl 4local -A opt_args 5local -a argargs sesslist 6 7case $service in 8 (tcp_open) 9 argargs=( 10 '(-a -f -l)-s[open session(s)]' 11 '(-a -f -s)-l[open list of sessions]' 12 '(-f -s -l)-a[open session for accept on fd]:fd' 13 '(-a -s -l)-f[open session for accept on fd]:fd' 14 '-q[quiet mode]' 15 '-z[no zle handler]' 16 ) 17 if [[ -n $words[(R)-(a|f)*] ]]; then 18 argargs+=(':session:->session') 19 elif [[ -n $words[(R)-(l|s)*] ]]; then 20 argargs+=('*:session:->session') 21 else 22 argargs+=(':host:_hosts' ':port:_ports' '*:session:->session') 23 fi 24 _arguments -C $argargs 25 ;; 26esac 27 28while (( $#state )); do 29 case "$state[1]" in 30 (sessionlist) 31 compset -P '*,' 32 ;& 33 34 (session) 35 sesslist=(${${${(f)"$(<~/.ztcp_sessions)"}:#[[:space:]]#\#*}/ /:}) 36 _describe -t sessions 'TCP session' sesslist && return 37 ;; 38 39 esac 40 shift state 41done 42