chiark / gitweb /
zsh_completion: complete only pids for systemd-coredumpctl
authorDaniel Wallace <danielwallace@gtmanfred.com>
Sun, 5 May 2013 23:09:53 +0000 (18:09 -0500)
committerLennart Poettering <lennart@poettering.net>
Mon, 6 May 2013 20:49:15 +0000 (22:49 +0200)
Instead of completing the whole line, which doesn't work, only complete
the pid, but still show the whole line so the user can see which command
was which.

Users can also let the parameter expansion sort the completion by date
instead of by pid, by setting

zstyle ':completion:*:*:systemd-coredumpctl:*' sort no

so that the zshcompsys doesn't sort the _describe function for only
systemd-coredumpctl.

shell-completion/systemd-zsh-completion.zsh

index b29a2e92237eab89fb4d15229afdfc732d381c4d..411646ea59f11d56e3f1522935b54ae74486683a 100644 (file)
@@ -896,12 +896,13 @@ _systemd-coredumpctl_command(){
         _describe -t commands 'systemd-coredumpctl command' _systemd_coredumpctl_cmds
     else
         local curcontext="$curcontext"
-        local -a dumps
+        local -a _dumps
         cmd="${${_systemd_coredumpctl_cmds[(r)$words[1]:*]%%:*}}"
         if (( $#cmd  )); then
-            dumps=( "${(f)$(_call_program dumps "systemd-coredumpctl list 2>/dev/null")}" )
-            if [[ -n "$dumps" ]]; then
-                compadd "${dumps[@]}"
+                       # user can set zstyle ':completion:*:*:systemd-coredumpctl:*' sort no for coredumps to be ordered by date, otherwise they get ordered by pid
+                       _dumps=( "${(foa)$(systemd-coredumpctl list | awk 'BEGIN{OFS=":"} /^\s/ {sub(/[[ \t]+/, ""); print $5,$0}' 2>/dev/null)}" )
+            if [[ -n "$_dumps" ]]; then
+                _describe -t pids 'coredumps' _dumps
             else
                 _message "no coredumps"
             fi