about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Completion/Unix/Command/_screen11
2 files changed, 16 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 4615da3da..42fb0beff 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-05-14  Clint Adams  <clint@zsh.org>
+
+	* Alexander Myodov: 23439: Completion/Unix/Command/_screen:
+	complete sessions for -dr, -dR, -Dr, -DR, -dx, and -Dx.
+
 2007-05-14  Peter Stephenson  <pws@csr.com>
 
 	* users/11484: Functions/Misc/zmv: allow renaming $f to $g
diff --git a/Completion/Unix/Command/_screen b/Completion/Unix/Command/_screen
index 43747fcf8..be0e3558d 100644
--- a/Completion/Unix/Command/_screen
+++ b/Completion/Unix/Command/_screen
@@ -75,7 +75,11 @@ _arguments -C \
   '-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' \
+  '-Dr: :->any-sessions' \
+  '-dr: :->any-sessions' \
   '-R[reattach if possible, otherwise start a new session]: :->detached-sessions' \
+  '-DR: :->any-sessions' \
+  '-dR: :->any-sessions' \
   '-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" \
@@ -84,6 +88,8 @@ _arguments -C \
   '(-)-v[print screen version]' \
   '(-)-wipe[do nothing, clean up SockDir]' \
   '-x[attach to a not detached screen (multi display mode)]: :->attached-sessions' \
+  '-Dx: :->any-sessions' \
+  '-dx: :->any-sessions' \
   '-X[execute command as a screen command in the specified session]:screencmd:(${scr_cmds[@]})' \
   '*::arguments: _normal'
 
@@ -101,6 +107,11 @@ if [[ -n $state ]]; then
             -ls)"}:#*[Dd]etached*}##[[:blank:]]}%%[[:blank:]]*}
       )
     ;;
+    any-sessions)
+      sessions=(
+        ${${${(M)${(f)"$(_call_program screen-sessions $words[1] \
+	    -ls)"}:#*tached*}##[[:blank:]]}%%[[:blank:]]*}
+      )
   esac
 
   # check if initial PID is necessary to make sessions unambiguous