summaryrefslogtreecommitdiff
path: root/etc/completions/_pkill
blob: 6f6cb3b826bce3bc64c2d30a065825b61ed57b29 (plain)
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#compdef pkill pgrep
## completion for pkill and pgrep
## Copyright (C) 2008 by Daniel Friesel <derf@derf.homelinux.org>
## License: WTFPL <http://sam.zoy.org/wtfpl>:
##   0. You just DO WHAT THE FUCK YOU WANT TO.
##
## http://derf.homelinux.org/git/zsh/plain/etc/completions/_pkill


## Not finished
##  * Some options lack completion / their completion is inspecific

typeset -a arguments
typeset expl

arguments=(
	'-c[count matching processes]'
	'-f[match pattern against full commandline]'
	'-g[match processes in the listed group IDs]:process group ID'
	'-G[match processes with this GID]:group:_groups'
	'-n[select newest matching process]'
	'-o[select oldest matching process]'
	'-P[select processes with this parent PID]:process ID:_pids'
	'-s[select processes with this session ID]:session ID'
	'-t[select processes with this controlling terminal]:terminal:_terminal'
	'-u[select processes owned by effective user]:user:_users'
	'-U[select processes owned by real user]:user:_users'
	'-v[negate the matching]'
	'-x[exact matches]'
	':pattern:_named_process'
)

if [[ ${service} == 'pgrep' ]] {
	arguments+='-d[set output delimiter]:delimiter'
	arguments+='-l[list process name]'
}

function _terminal {
	_path_files -W /dev
}

function _named_process {
	typeset -a pgrep_user
	typeset IFS=$'\n'
	if (( EUID )) {
		pgrep_user=(-u ${EUID})
	}
	_message 'pattern'
	_wanted pattern expl 'process name' \
	compadd ${$(pgrep ${pgrep_user} -l '')#* }
}

_arguments -s ${arguments}
_signals -p