summaryrefslogtreecommitdiffstats
path: root/Completion/Base/Utility
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Base/Utility')
-rw-r--r--Completion/Base/Utility/_numbers13
-rw-r--r--Completion/Base/Utility/_values4
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"