diff options
-rw-r--r-- | Completion/Builtins/_pids | 14 | ||||
-rw-r--r-- | Completion/Core/_path_files | 12 | ||||
-rw-r--r-- | Completion/Core/compinit | 14 | ||||
-rw-r--r-- | Completion/User/_cvs | 8 | ||||
-rw-r--r-- | Completion/User/_pbm | 4 |
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 |