summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Completion/Unix/Command/_pgrep8
2 files changed, 10 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 949fdda57..72b1ebaad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2018-04-13 Daniel Hahler <zsh@thequod.de>
+
+ * 42631: Completion/Unix/Command/_pgrep: _pgrep: pkill: fix completion
+ of signals.
+
2018-04-12 Oliver Kiddle <okiddle@yahoo.co.uk>
* 42624 (plus test): Src/exec.c, Test/C04funcdef.ztst: avoid
diff --git a/Completion/Unix/Command/_pgrep b/Completion/Unix/Command/_pgrep
index 714bf095b..ec3f8bfd0 100644
--- a/Completion/Unix/Command/_pgrep
+++ b/Completion/Unix/Command/_pgrep
@@ -32,9 +32,7 @@ arguments=('-P[parent process id]:parent process id:->ppid'
'-x[match exactly]'
'-z[match only in zones]:zone:_zones')
-if [[ $service == 'pkill' ]]; then
- arguments+=('-'${^signals}'[signal]')
-elif [[ $service == 'pgrep' ]]; then
+if [[ $service == 'pgrep' ]]; then
arguments+=('-d[output delimiter]:delimiter:compadd ${(s\:\:)IFS}'
'-l[list name in addition to id]')
fi
@@ -64,8 +62,12 @@ case "$OSTYPE" in
optchars="flvxdnoPgsuUGt"
;;
esac
+# Only keep relevant arguments according to $optchars.
arguments=( ${(M)arguments:#(|\*)(|\(*\))-[$optchars]*}
'*:process name:->pname')
+if [[ $service == 'pkill' ]]; then
+ arguments+=('-'${^signals}'[signal]')
+fi
_arguments -C -s -w $arguments && ret=0