diff options
Diffstat (limited to 'Completion/Builtins/_jobs')
-rw-r--r-- | Completion/Builtins/_jobs | 28 |
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 '%' |