diff options
author | Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp> | 2018-06-25 11:04:31 +0900 |
---|---|---|
committer | Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp> | 2018-06-25 11:09:14 +0900 |
commit | a0233a74e3677941f07bf4efba3cbd6fd3e9b918 (patch) | |
tree | 6e985fc72e3a35be58ca31d9c198fbcd8f17d814 /Completion/Unix/Type | |
parent | 951b94527924a5fa0c88c5facaa4c86682efbc8d (diff) | |
download | zsh-a0233a74e3677941f07bf4efba3cbd6fd3e9b918.tar.gz zsh-a0233a74e3677941f07bf4efba3cbd6fd3e9b918.tar.xz zsh-a0233a74e3677941f07bf4efba3cbd6fd3e9b918.zip |
43079, 43086: new utility to complete names of running processes
And new completions for dtruss, fs_usage and sc_usage.
Diffstat (limited to 'Completion/Unix/Type')
-rw-r--r-- | Completion/Unix/Type/_process_names | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/Completion/Unix/Type/_process_names b/Completion/Unix/Type/_process_names new file mode 100644 index 000000000..4f184ccb7 --- /dev/null +++ b/Completion/Unix/Type/_process_names @@ -0,0 +1,44 @@ +#autoload +# +# complete names of running processes +# +# options: +# -a: include all processes (owned by others, no tty, etc.) +# -t: use truncated process names (e.g., those in /proc/PID/stat) +# (only on Linux and BSDs) +# +# this name has been used in _killall and documented in zshcompsys(1) +local tagname='processes-names' +typeset -a expl opts names all truncate + +zparseopts -E -D 'a=all' 't=truncate' +(( $#all )) && opts=( -A ) + +local hyphen='-' +# on Linux, use BSD-style option to include processes on other ttys +[[ $OSTYPE == linux* ]] && hyphen='' + +case $OSTYPE in + (linux*|freebsd*|openbsd*|netbsd*) + if (( $#truncate )); then + if [[ $OSTYPE == netbsd* ]]; then + opts+=(-co args=) + else + opts+=(${hyphen}o comm=) + fi + names=( ${${(f)"$(_call_program $tagname ps $opts 2>/dev/null)"}#-} ) + else + opts+=(${hyphen}o args=) + names=( ${(f)"$(_call_program $tagname ps $opts 2>/dev/null )"} ) + names=( ${${${${${names:#\[*]}%% *}%:}#-}:t} + ${${${(M)names:#\[*]}#\[}%]} ) + fi + ;; + (*) + # ignore -t option + opts+=(-o comm=) + names=( ${${${(f)"$(_call_program $tagname ps $opts 2>/dev/null)"}#-}:t} ) + ;; +esac + +_wanted $tagname expl 'process name' compadd "$@" -F '(ps)' -a - names |