From 92637abbb870dc35e1af9150741f7b11587a3350 Mon Sep 17 00:00:00 2001 From: Sven Wischnowsky Date: Mon, 8 May 2000 08:16:32 +0000 Subject: misc. completion cleanups and changes (11242) --- Completion/Builtins/_pids | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) (limited to 'Completion/Builtins/_pids') diff --git a/Completion/Builtins/_pids b/Completion/Builtins/_pids index d3cf8a68e..5956ddb29 100644 --- a/Completion/Builtins/_pids +++ b/Completion/Builtins/_pids @@ -3,13 +3,21 @@ # If given the `-m ' option, this tries to complete only pids # of processes whose command line match the `'. -local out list expl match desc listargs args +local out list expl match desc listargs args all nm ret=1 _tags processes || return 1 if [[ "$1" = -m ]]; then - match="${2}*" + all=() + match="[[:blank:]]#${PREFIX}[0-9]#${SUFFIX}[[:blank:]]*[/[:blank:]]${2}*" shift 2 +elif [[ "$PREFIX$SUFFIX" = [0-9]# ]]; then + all=() + match="[[:blank:]]#${PREFIX}[0-9]#${SUFFIX}[[:blank:]]*" +else + all=(-U) + match="*[[:blank:]]*[/[:blank:]]$PREFIX*$SUFFIX*" + nm="$compstate[nmatches]" fi zstyle -s ":completion:${curcontext}:processes" command args @@ -20,9 +28,9 @@ if zstyle -T ":completion:${curcontext}:processes" verbose; then zstyle -s ":completion:${curcontext}:processes-list" command listargs (( $#listargs )) || listargs=( "$args[@]" ) if [[ "$listargs" = "$args" ]]; then - list=("${(@Mr:COLUMNS-1:)${(f@)out}[2,-1]:#[ ]#${PREFIX}[0-9]#${SUFFIX}[ ]*${~match}}") + list=("${(@Mr:COLUMNS-1:)${(f@)out}[2,-1]:#${~match}}") else - list=("${(@Mr:COLUMNS-1:)${(f@)$(_call processes-list ps 2>/dev/null)}[2,-1]:#[ ]#${PREFIX}[0-9]#${SUFFIX}[ ]*${~match}}") + list=("${(@Mr:COLUMNS-1:)${(f@)$(_call processes-list ps 2>/dev/null)}[2,-1]:#${~match}}") fi desc=(-ld list) else @@ -30,5 +38,18 @@ else fi _wanted processes expl 'process ID' \ - compadd "$@" "$desc[@]" - \ - ${${${(M)${(f)"${out}"}[2,-1]:#[ ]#${PREFIX}[0-9]#${SUFFIX}[ ]#*${~match}}## #}%% *} + compadd "$@" "$desc[@]" "$all[@]" - \ + ${${${(M)${(f)"${out}"}[2,-1]:#${~match}}## #}%% *} && ret=0 + +if [[ -n "$all" ]]; then + zstyle -s ":completion:${curcontext}:processes" insert-ids out || out=menu + + case "$out" in + menu) compstate[insert]=menu ;; + single) [[ $compstate[nmatches] -ne nm+1 ]] && compstate[insert]= ;; + *) [[ ${#:-$PREFIX$SUFFIX} -gt ${#compstate[unambiguous]} ]] && + compstate[insert]=menu ;; + esac +fi + +return ret -- cgit 1.4.1