summaryrefslogtreecommitdiffstats
path: root/Completion/Unix/Command
diff options
context:
space:
mode:
authorClint Adams <clint@users.sourceforge.net>2005-04-12 22:45:15 +0000
committerClint Adams <clint@users.sourceforge.net>2005-04-12 22:45:15 +0000
commitf82136ac94a7bc9e2d50223bbccd04a307a5a6d2 (patch)
treeb9e577dcc28241d3ea962d0bb6ca32f3f22c6fac /Completion/Unix/Command
parentforgot to add _xpdf (diff)
downloadzsh-f82136ac94a7bc9e2d50223bbccd04a307a5a6d2.tar
zsh-f82136ac94a7bc9e2d50223bbccd04a307a5a6d2.tar.gz
zsh-f82136ac94a7bc9e2d50223bbccd04a307a5a6d2.tar.bz2
zsh-f82136ac94a7bc9e2d50223bbccd04a307a5a6d2.tar.lz
zsh-f82136ac94a7bc9e2d50223bbccd04a307a5a6d2.tar.xz
zsh-f82136ac94a7bc9e2d50223bbccd04a307a5a6d2.tar.zst
zsh-f82136ac94a7bc9e2d50223bbccd04a307a5a6d2.zip
* 21135: complete attached sessions after screen -x.
Diffstat (limited to 'Completion/Unix/Command')
-rw-r--r--Completion/Unix/Command/_screen114
1 files changed, 114 insertions, 0 deletions
diff --git a/Completion/Unix/Command/_screen b/Completion/Unix/Command/_screen
new file mode 100644
index 000000000..c2ecd0382
--- /dev/null
+++ b/Completion/Unix/Command/_screen
@@ -0,0 +1,114 @@
+#compdef screen
+
+local curcontext="$curcontext" state line expl
+local scr_cmds sessions
+
+scr_cmds=(
+ acladd aclchg acldel aclgrp
+ aclumask activity addacl allpartial
+ altscreen at attrcolor autodetach
+ autonuke backtick bce bd_bc_down
+ bd_bc_left bd_bc_right bd_bc_up bd_bell
+ bd_braille_table bd_eightdot bd_info bd_link
+ bd_lower_left bd_lower_right bd_ncrc bd_port
+ bd_scroll bd_skip bd_start_braille bd_type
+ bd_upper_left bd_upper_right bd_width bell_msg
+ bind bindkey blanker blankerprg
+ break breaktype bufferfile c1
+ caption chacl charset chdir
+ clear colon command compacthist
+ console copy crlf debug
+ defautonuke defbce defbreaktype defc1
+ defcharset defencoding defescape defflow
+ defgr defhstatus defkanji deflog
+ deflogin defmode defmonitor defnonblock
+ defobuflimit defscrollback defshell defsilence
+ defslowpaste defutf8 defwrap defwritelock
+ detach digraph dinfo displays
+ dumptermcap echo encoding escape
+ eval exec fit flow
+ focus gr hardcopy hardcopy_append
+ hardcopydir hardstatus height help
+ history hstatus idle ignorecase
+ info kanji kill lastmsg
+ license lockscreen log logfile
+ login logtstamp mapdefault mapnotnext
+ maptimeout markkeys maxwin meta
+ monitor msgminwait msgwait multiuser
+ nethack next nonblock number
+ obuflimit only other partial
+ password paste pastefont pow_break
+ pow_detach pow_detach_msg prev printcmd
+ process quit readbuf readreg
+ redisplay register remove removebuf
+ reset resize screen scrollback
+ select sessionname setenv setsid
+ shell shelltitle silence silencewait
+ sleep slowpaste sorendition source
+ split startup_message stuff su
+ suspend term termcap termcapinfo
+ terminfo time title umask
+ unsetenv utf8 vbell vbell_msg
+ vbellwait verbose version wall
+ width windowlist windows wrap
+ writebuf writelock xoff xon
+ zmodem zombie
+)
+
+_arguments -C \
+ "-a[force all capabilities into each window's termcap]" \
+ '-A[adapt all windows to the new display width & height]' \
+ "-c[read configuration file instead of '.screenrc']:config file:_files -/" \
+ '-d[detach the elsewhere running screen (with -r: reattach here)]: :->attached-sessions' \
+ '-dmS[start as daemon, screen session in detached mode]: :->detached-sessions' \
+ '-D[detach and logout remote (with -r: reattach here)]' \
+ '-e[change command characters]:command characters' \
+ '-f-[set flow control]:flow control:((n\:flow\ control\ off a\:flow\ control\ auto \:flow\ control\ on))' \
+ '-h[set the size of the scrollback history buffer]:buffer size' \
+ '-i[interrupt output sooner when flow control is on]' \
+ '(-l)-ln[login mode off (do not update utmp database)]' \
+ '(-ln)-l[login mode on (update utmp database)]' \
+ '(-)'{-ls,-list}'[list sessions/socket directory]' \
+ "-L[terminal's last character can be safely updated]" \
+ '-m[ignore $STY variable, do create a new screen session]' \
+ '-O[choose optimal output rather than exact vt100 emulation]' \
+ '-p[preselect the named window]:window number or name:((\=\:windowlist -\:blank\ window \:window\ number))' \
+ '-q[quiet startup, exit with non-zero return code if unsuccessful]' \
+ '-r[reattach to a detached screen process]: :->detached-sessions' \
+ '-R[reattach if possible, otherwise start a new session]' \
+ '-s[shell to execute rather than $SHELL]:shell name: _command_names -e' \
+ '-S[name this session <pid>.sockname instead of <pid>.<tty>.<host>]:session name' \
+ "-t[set title (window's name)]:title" \
+ '-T[use term as $TERM for windows, rather than "screen"]:terminal type:_terminals' \
+ '-U[tell screen to use UTF-8 encoding]' \
+ '(-)-v[print screen version]' \
+ '(-)-wipe[do nothing, clean up SockDir]' \
+ '-x[attach to a not detached screen (multi display mode)]: :->attached-sessions' \
+ '-X[execute command as a screen command in the specified session]:screencmd:(${scr_cmds[@]})' \
+ '*::arguments: _normal'
+
+if [[ -n $state ]]; then
+ case $state in
+ attached-sessions)
+ sessions=(
+ ${${${(M)${(f)"$(_call_program screen-sessions $words[1] \
+ -ls)"}:#*[Aa]ttached*}##[[:blank:]]}%%[[:blank:]]*}
+ )
+ ;;
+ detached-sessions)
+ sessions=(
+ ${${${(M)${(f)"$(_call_program screen-sessions $words[1] \
+ -ls)"}:#*[Dd]etached*}##[[:blank:]]}%%[[:blank:]]*}
+ )
+ ;;
+ esac
+
+ # check if initial PID is necessary to make sessions unambiguous
+ if [[ ${#${(u)sessions#*.}} -lt $#sessions ]]; then
+ _wanted screen-sessions expl "${state%-*} screen process" \
+ compadd -a sessions
+ else
+ _wanted screen-sessions expl "${state%-*} screen process" \
+ compadd ${sessions#*.}
+ fi
+fi