about summary refs log tree commit diff
path: root/Completion/Builtins/_kill
blob: a3efbef41845d48a1a1b37e5450aef99787ef117 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#compdef kill

local list expl

if compset -P 1 -; then
  _description expl signal
  compadd "$expl[@]" $signals[1,-3]
else
  local prios tags ret=1
  
  _tags job process
  
  while _tags; do
    [[ "$tags" = *:job:* ]] && _jobs && ret=0
    if [[ "$tags" = *:process:* ]]; then
      list=("${(@M)${(f@)$(ps ${=compconfig[ps_listargs]:-$=compconfig[ps_args]} 2>/dev/null)}[2,-1]:#[ 	]#${PREFIX}[0-9]#${SUFFIX}[ 	]*}")
      _description expl 'process ID'
      compadd "$expl[@]" -ld list - \
        ${${${(f)"$(ps $=compconfig[ps_args] 2>/dev/null)"}[2,-1]## #}%% *} &&
          ret=0
    fi
    (( ret )) || break
  done

  return ret
fi