about summary refs log tree commit diff
path: root/Completion/Builtins
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>1999-12-13 12:37:39 +0000
committerTanaka Akira <akr@users.sourceforge.net>1999-12-13 12:37:39 +0000
commit27daaed7b0c1d5df43eb5671200a4ee9af8285d1 (patch)
tree9ab604ed12b01202709525d600a38cb9b259dbb7 /Completion/Builtins
parent79e1686a12e7ed0a3a2ae7372e4a3320ebd5f901 (diff)
downloadzsh-27daaed7b0c1d5df43eb5671200a4ee9af8285d1.tar.gz
zsh-27daaed7b0c1d5df43eb5671200a4ee9af8285d1.tar.xz
zsh-27daaed7b0c1d5df43eb5671200a4ee9af8285d1.zip
zsh-workers/9018
Diffstat (limited to 'Completion/Builtins')
-rw-r--r--Completion/Builtins/_pids14
1 files changed, 10 insertions, 4 deletions
diff --git a/Completion/Builtins/_pids b/Completion/Builtins/_pids
index af88a5920..8b5d27bc5 100644
--- a/Completion/Builtins/_pids
+++ b/Completion/Builtins/_pids
@@ -3,7 +3,7 @@
 # If given the `-m <pattern>' option, this tries to complete only pids
 # of processes whose command line match the `<pattern>'.
 
-local list expl match desc listargs args
+local out list expl match desc listargs args
 
 _wanted processes expl 'process ID' || return 1
 
@@ -12,12 +12,18 @@ if [[ "$1" = -m ]]; then
   shift 2
 fi
 
-zstyle -a ":completion${curcontext}:ps" list-arguments listargs
 zstyle -a ":completion${curcontext}:ps" arguments args
-(( $#listargs )) || listargs=( "$args[@]" )
+
+out="$(command ps $args 2>/dev/null)"
 
 if zstyle -t ":completion${curcontext}:processes" verbose; then
-  list=("${(@Mr:COLUMNS-1:)${(f@)$(command ps $listargs 2>/dev/null)}[2,-1]:#[ 	]#${PREFIX}[0-9]#${SUFFIX}[ 	]*${~match}}")
+  zstyle -a ":completion${curcontext}:ps" list-arguments listargs
+  (( $#listargs )) || listargs=( "$args[@]" )
+  if [[ "$listargs" = "$args" ]]; then
+    list=("${(@Mr:COLUMNS-1:)${(f@)out}[2,-1]:#[ 	]#${PREFIX}[0-9]#${SUFFIX}[ 	]*${~match}}")
+  else
+    list=("${(@Mr:COLUMNS-1:)${(f@)$(command ps $listargs 2>/dev/null)}[2,-1]:#[ 	]#${PREFIX}[0-9]#${SUFFIX}[ 	]*${~match}}")
+  fi
   desc=(-ld list)
 else
   desc=()