_n-kill
834 bytes
1#compdef n-kill
2
3local context ret=1
4
5typeset -a list linewords
6typeset -aU words wordbits
7local line word
8integer cygwin=0
9
10local IFS="
11"
12
13case "$(uname)" in
14 CYGWIN*) list=( `command ps -Wa` ); cygwin=1 ;;
15 *) list=( `command ps -o pid,uid,command -A` ) ;;
16esac
17
18shift list
19
20IFS=" "
21for line in "${list[@]}"; do
22 linewords=( $=line )
23 if [ "$cygwin" = "1" ]; then
24 linewords=( "${(@)linewords[8,-1]}" )
25 else
26 linewords=( "${(@)linewords[3,-1]}" )
27 fi
28 for word in "${linewords[@]}"; do
29 if [ "$cygwin" = "1" ]; then
30 wordbits=( "${(@s:\:)word}" )
31 else
32 wordbits=( "${(@s:/:)word}" )
33 fi
34 words+=( "${wordbits[@]}" )
35 done
36done
37
38_wanted bits expl "Processes' name bits" \
39 compadd -M 'm:{a-z}={A-Z}' "$@" -a - words && ret=0
40
41return "$ret"