diff options
Diffstat (limited to 'Completion/Base/Utility')
| -rw-r--r-- | Completion/Base/Utility/_numbers | 13 | ||||
| -rw-r--r-- | Completion/Base/Utility/_values | 4 |
2 files changed, 10 insertions, 7 deletions
diff --git a/Completion/Base/Utility/_numbers b/Completion/Base/Utility/_numbers index 069fc75a4..257e267a8 100644 --- a/Completion/Base/Utility/_numbers +++ b/Completion/Base/Utility/_numbers @@ -37,7 +37,8 @@ # _description is called with the x token set to make the completed # list of suffixes available to the normal format style -local desc tag range suffixes suffix suffixfmt pat='<->' partial='' +local MATCH MBEGIN MEND +local desc tag range suffixes suffix suffixfmt pad pat='<->' partial='' local -a expl formats local -a default max min keep tags units local -i i @@ -56,7 +57,9 @@ desc="${1:-number}" tag="${tags[2]:-numbers}" if (( $#argv )) && compset -P "$pat"; then zstyle -s ":completion:${curcontext}:units" list-separator sep || sep=-- _description -V units expl unit - disp=( ${${argv#:}/:/ $sep } ) + pad=${#${(O)${${argv%%:*}//?/.}}[1]} # length of longest suffix + disp=( ${${argv#:}/(#m)[^:]##/${(pr<$pad>< >)MATCH}} ) # pad suffixes + disp=( ${disp/:/ $sep } ) compadd -M 'r:|/=* r:|=*' -d disp "$keep[@]" "$expl[@]" - ${${argv#:}%%:*} return elif [[ -prefix $~pat || $PREFIX = $~partial ]]; then @@ -70,10 +73,10 @@ elif [[ -prefix $~pat || $PREFIX = $~partial ]]; then zstyle -s ":completion:${curcontext}:unit-suffixes" format suffixfmt || \ suffixfmt='%(d.%U.)%x%(d.%u.)%(r..|)' for ((i=0;i<$#;i++)); do - zformat -f suffix "$suffixfmt" "x:${${argv[i+1]#:}%%:*}" \ - "X:${${argv[i+1]#:}#*:}" "d:${#${argv[i+1]}[1]#:}" \ + zformat -f suffix "$suffixfmt" "x:${${${argv[i+1]#:}%%:*}//\%/%%}" \ + "X:${${${argv[i+1]#:}#*:}//\%/%%}" "d:${#${argv[i+1]}[1]#:}" \ i:i r:$(( $# - i - 1)) - suffixes+="${suffix//\%/%%}" + suffixes+=$suffix done [[ -n $suffixes ]] && formats+=( x:$suffixes ) diff --git a/Completion/Base/Utility/_values b/Completion/Base/Utility/_values index 5ed79e890..a8a14c73f 100644 --- a/Completion/Base/Utility/_values +++ b/Completion/Base/Utility/_values @@ -59,8 +59,8 @@ if compvalues -i "$keep[@]" "$@"; then _describe "$descr" \ noargs "$sep[@]" -M 'r:|[_-]=* r:|=*' -- \ - args -S "${argsep}" -M 'r:|[_-]=* r:|=*' -- \ - opts -qS "${argsep}" -r "${argsep}${sep[2]} \\t\\n\\-" -M 'r:|[_-]=* r:|=*' + args -S "${argsep}" -r "${argsep}${sep[2]}" -M 'r:|[_-]=* r:|=*' -- \ + opts -S "${argsep}" -r "${argsep}${sep[2]} \\t\\n\\-" -M 'r:|[_-]=* r:|=*' curcontext="$oldcontext" |
