about summary refs log tree commit diff
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
parent79e1686a12e7ed0a3a2ae7372e4a3320ebd5f901 (diff)
downloadzsh-27daaed7b0c1d5df43eb5671200a4ee9af8285d1.tar.gz
zsh-27daaed7b0c1d5df43eb5671200a4ee9af8285d1.tar.xz
zsh-27daaed7b0c1d5df43eb5671200a4ee9af8285d1.zip
zsh-workers/9018
-rw-r--r--Completion/Builtins/_pids14
-rw-r--r--Completion/Core/_path_files12
-rw-r--r--Completion/Core/compinit14
-rw-r--r--Completion/User/_cvs8
-rw-r--r--Completion/User/_pbm4
5 files changed, 29 insertions, 23 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=()
diff --git a/Completion/Core/_path_files b/Completion/Core/_path_files
index 0f1ef01fe..993d0e89a 100644
--- a/Completion/Core/_path_files
+++ b/Completion/Core/_path_files
@@ -6,7 +6,7 @@
 local linepath realpath donepath prepath testpath exppath
 local tmp1 tmp2 tmp3 tmp4 i orig pre suf tpre tsuf opre osuf cpre
 local pats haspats=no ignore group expl addpfx addsfx remsfx
-local nm=$compstate[nmatches] menu match matcher mopts
+local nm=$compstate[nmatches] menu match matcher mopts atmp
 
 typeset -U prepaths exppaths
 
@@ -366,12 +366,12 @@ for prepath in "$prepaths[@]"; do
 	fi
       else
         if [[ "$tmp3" = */* ]]; then
+	  atmp=( -Qf "$mopts[@]" -p "$linepath$tmp4"
+	         -W "$prepath$realpath$testpath" "$ignore[@]"
+	         "$addpfx[@]" "$addsfx[@]" "$remsfx[@]"
+                 -M "r:|/=* r:|=* $match" "$group[@]" "$expl[@]" )
           for i in "$tmp1[@]"; do
-	    compadd -Qf "$mopts[@]" -p "$linepath$tmp4" -s "/${i#*/}" \
-		    -W "$prepath$realpath$testpath" "$ignore[@]" \
-		    "$addpfx[@]" "$addsfx[@]" "$remsfx[@]" \
-                    -M "r:|/=* r:|=* $match" "$group[@]" "$expl[@]" \
-		    - "${i%%/*}"
+	    compadd "$atmp[@]" -s "/${i#*/}" - "${i%%/*}"
 	  done
         else
 	  compadd -Qf "$mopts[@]" -p "$linepath$tmp4" \
diff --git a/Completion/Core/compinit b/Completion/Core/compinit
index 0d99aadd5..57c7a97e2 100644
--- a/Completion/Core/compinit
+++ b/Completion/Core/compinit
@@ -485,13 +485,13 @@ compstyle() {
 
 # Default styles. This should be executed conditionally somehow.
 
-compstyle '*'         verbose       'yes'
-compstyle '*'         prefix-needed 'yes'
-compstyle '*'         prefix-hidden 'no'
-compstyle ':correct'  accept        '2n'
-compstyle ':correct'  prompt        'correct to:'
-compstyle '*'         completer     '_complete'
-compstyle '*:default' list-colors   no=0 fi=0 di=0 ln=0 pi=0 so=0 bd=0 cd=0 ex=0
+zstyle ':completion:*'        verbose       'yes'
+zstyle ':completion:*'        prefix-needed 'yes'
+zstyle ':completion:*'        prefix-hidden 'no'
+zstyle ':completion:correct'  accept        '2n'
+zstyle ':completion:correct'  prompt        'correct to:'
+zstyle ':completion:*'        completer     '_complete'
+zstyle ':completion*:default' list-colors   no=0 fi=0 di=0 ln=0 pi=0 so=0 bd=0 cd=0 ex=0
 
 # Now we automatically make the definition files autoloaded.
 
diff --git a/Completion/User/_cvs b/Completion/User/_cvs
index fc0ab3116..4ebbd4222 100644
--- a/Completion/User/_cvs
+++ b/Completion/User/_cvs
@@ -578,7 +578,7 @@ _cvs_files_removed () {
     omit=(${pref}*(D:t))
     eval 'entries=(${entries:#('${(j:|:)${(@)omit:q}}')})'
     _tags directories && compadd "$@" -P "$qpref" - ${entries:q} ||
-    _cvs_directories "$@"
+        _cvs_directories "$@"
   else
     _files "$@"
   fi
@@ -595,9 +595,9 @@ _cvs_files_unmaintained () {
     omit=($_cvs_ignore_default ${entries:q} ${=cvsignore})
     [[ -r ~/.cvsignore ]] && omit=($omit $(<~/.cvsignore))
     [[ -r ${pref}.cvsignore ]] && omit=($omit $(<${pref}.cvsignore))
-    _files "$@" -g '*~(*/|)('${(j:|:)omit}')(D)' ||
-    _files "$@" -g '*~(*/|)('${(j:|:)${(@)entries:q}}')(D)' ||
-    _cvs_directories "$@"
+    _path_files "$@" -g '*~(*/|)('${(j:|:)omit}')(D)' ||
+        _path_files "$@" -g '*~(*/|)('${(j:|:)${(@)entries:q}}')(D)' ||
+        _cvs_directories "$@"
   else
     _files "$@"
   fi
diff --git a/Completion/User/_pbm b/Completion/User/_pbm
index 7eff60c69..2c12505ee 100644
--- a/Completion/User/_pbm
+++ b/Completion/User/_pbm
@@ -21,7 +21,7 @@ if [[ $# -ne 0 || $+_in_pbm -ne 0 ]]; then
     _description files expl 'picture file'
     set -- "$expl[@]"
   fi
-  _files "$@" -g "$pat" || _files "$@" -g '*.(#i)p[bgp]m'
+  _path_files "$@" -g "$pat" || _files "$@" -g '*.(#i)p[bgp]m'
   return
 fi
 
@@ -774,5 +774,5 @@ zeisstopnm)
 
 *)
   _description files expl 'picture file'
-  _files "$expl[@]" -g "$pat" || _files "$expl[@]" -g '*.(#i)p[bgp]m'
+  _path_files "$expl[@]" -g "$pat" || _files "$expl[@]" -g '*.(#i)p[bgp]m'
 esac