From f82136ac94a7bc9e2d50223bbccd04a307a5a6d2 Mon Sep 17 00:00:00 2001 From: Clint Adams Date: Tue, 12 Apr 2005 22:45:15 +0000 Subject: * 21135: complete attached sessions after screen -x. --- ChangeLog | 5 ++ Completion/Unix/Command/_screen | 114 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 Completion/Unix/Command/_screen diff --git a/ChangeLog b/ChangeLog index f2c6a4096..9997f0409 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-04-12 Clint Adams + + * 21135: Completion/Unix/Command/_screen: complete attached + sessions after screen -x. + 2005-04-11 Clint Adams * 21132: Completion/Unix/Type/_pdf, Completion/X/Command/_xpdf: 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 .sockname instead of ..]: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 -- cgit 1.4.1