about summary refs log tree commit diff
path: root/Completion/Builtins/_jobs
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>1999-11-03 10:48:39 +0000
committerTanaka Akira <akr@users.sourceforge.net>1999-11-03 10:48:39 +0000
commit4777e2acd41ad06d172ff06e2ff989fdeee3e19b (patch)
tree53c0ec7aab30f9e1ad6cf618be54f0223e608c00 /Completion/Builtins/_jobs
parent438a49c8d7a105b5e0b24eb3f658cad14df841c4 (diff)
downloadzsh-4777e2acd41ad06d172ff06e2ff989fdeee3e19b.tar.gz
zsh-4777e2acd41ad06d172ff06e2ff989fdeee3e19b.tar.xz
zsh-4777e2acd41ad06d172ff06e2ff989fdeee3e19b.zip
zsh-workers/8515
Diffstat (limited to 'Completion/Builtins/_jobs')
-rw-r--r--Completion/Builtins/_jobs28
1 files changed, 26 insertions, 2 deletions
diff --git a/Completion/Builtins/_jobs b/Completion/Builtins/_jobs
index c17b73c92..869aeeb8a 100644
--- a/Completion/Builtins/_jobs
+++ b/Completion/Builtins/_jobs
@@ -1,3 +1,27 @@
-#compdef disown fg jobs
+#autoload
+
+local expl disp jobs job jids
+
+if [[ "$1" = -r ]]; then
+  jids=( "${(@k)jobstates[(R)running*]}" )
+  shift
+  _description expl 'running job'
+elif [[ "$1" = -s ]]; then
+  jids=( "${(@k)jobstates[(R)running*]}" )
+  shift
+  _description expl 'suspended job'
+else
+  [[ "$1" = - ]] && shift
+  jids=( "${(@k)jobtexts}" )
+  _description expl job
+fi
+
+disp=()
+jobs=()
+for job in "$jids[@]"; do
+  disp=( "$disp[@]" "${(l:3:: ::%:)job} -- ${jobtexts[$job]}" )
+  jobs=( "$jobs[@]" "$job" )
+done
+
+compadd "$@" "$expl[@]" -ld disp - "%$^jobs[@]"
 
-_job -P '%'