From dfb2f3f3d24f40012d129d3c205c9ca149f1bc1e Mon Sep 17 00:00:00 2001 From: Jun-ichi Takimoto Date: Tue, 8 Nov 2016 21:49:33 +0900 Subject: 39857: add support for darwin, with improvements on linux etc. --- Completion/Unix/Command/_top | 177 ++++++++++++++++++++++++++++++------------- 1 file changed, 125 insertions(+), 52 deletions(-) (limited to 'Completion/Unix/Command') diff --git a/Completion/Unix/Command/_top b/Completion/Unix/Command/_top index 0259c236a..8f81e9526 100644 --- a/Completion/Unix/Command/_top +++ b/Completion/Unix/Command/_top @@ -1,12 +1,16 @@ #compdef top -local specs fields +local curcontext="$curcontext" state state_descr line ret=1 +local -A opt_args +local -a specs fields order opts + +opts=( -s -w -C ) case $OSTYPE in *linux*) fields=( '%CPU:CPU usage' '%MEM:memory usage (res)' 'CGROUPS:control groups' - 'CODE:code size' 'COMMAND:Commane name/line' 'DATA:data + stack size' + 'CODE:code size' 'COMMAND:Command name/line' 'DATA:data + stack size' 'ENVIRON:environment variables' 'Flags:task flags' 'GID:group id' 'GROUP:group name' 'NI:nice value' 'P:last used CPU (SMP)' 'PGRP:process group id' 'PID:process id' 'PPID:parent pid' 'PR:priority' @@ -24,78 +28,147 @@ case $OSTYPE in 'nsUTS:UTS namespace' 'vMj:major page fault count delta' 'vMn:minor page fault count delta' ) + order=( '+:descending (default)' '-:ascending' ) specs=( - '(-v -h)-'{h,v}'[show version and usage]' + '(-)-'{h,v}'[show version and usage]' '-b[batch mode]' '-c[command line/program name toggle]' - '-d[delay time interval]:interval' + '-d+[delay time interval]:interval' '-H[threads mode operation]' '-i[idle process toggle]' - '-n[number of iterations]:number of iterations' - '-o[override sort field]:fieldname:(( $fields ))' + '-n+[number of iterations]:number of iterations' + '-o+[override sort field]:fieldname:->sortkey' '-O[output field names]' - '*-p[monitor pids]: :_pids' + '*-p+[monitor pids]: :_sequence -s , _pids' '-s[secure mode operation]' '-S[cumulative time toggle]' - '(-U)-u[effective user filter mode]: :_users' - '(-u)-U[user filter mode]: :_users' - '-w[output width override]:number' + '(-U)-u+[effective user filter mode]: :_users' + '(-u)-U+[user filter mode]: :_users' + '-w+[output width override]::number' );; - freebsd*) + freebsd*|openbsd*) + fields=( cpu size res time pri pid ) specs=( - '-C[CPU display mode]' - '-S[show system processes]' - '-a[display command names via argv]' '-b[batch mode]' + '-d+[show only specified number of displays then exit]:count:' '-H[display individual threads]' - '-i[interactive mode]' '-I[do not display idle processes]' + '-i[interactive mode]' + '-n[non-interactive mode (identical to batch mode)]' + '-o+[sort process display by the specified field]:field:( $fields )' + '-q[renice top to -20]' + '-S[show system processes]' + '-s+[specify delay interval]:seconds:' + '-u[do not translate uid to name]' + '1: :_guard "^-*" "number of processes to display"' + );| + freebsd*) + fields+=( threads total read write fault vcsw ivcsw jid ) + specs+=( + '-C[CPU display mode]' + '-a[display command names via argv]' '-j[display the jail ID]' '-t[do not display the top process]' - '-m+[statistic type]:type:(( cpu\:default io ))' - '-n[non-interactive mode]' + '-m+[specify statistic type]:type:(( cpu\:default io ))' '-P[per-cpu CPU usage statistics]' - '-q[renice top to -20]' - '-u[do not translate uid to name]' - '-v[write version number]' - '-z[no not display system idle process]' - '-d+[number of iterations]:count:' - '-s+[set delay interval]:interval:' - '-o+[sort process display by field]:field:( - cpu size res time pri threads total read - write f