about summary refs log tree commit diff
path: root/Completion/Base
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Base')
-rw-r--r--Completion/Base/Completer/_approximate7
-rw-r--r--Completion/Base/Utility/_describe8
2 files changed, 12 insertions, 3 deletions
diff --git a/Completion/Base/Completer/_approximate b/Completion/Base/Completer/_approximate
index 70c2c926f..a442c9a97 100644
--- a/Completion/Base/Completer/_approximate
+++ b/Completion/Base/Completer/_approximate
@@ -10,7 +10,7 @@
 
 [[ _matcher_num -gt 1 || "${#:-$PREFIX$SUFFIX}" -le 1 ]] && return 1
 
-local _comp_correct _correct_expl comax cfgacc match
+local _comp_correct _correct_expl _correct_group comax cfgacc match
 local oldcontext="${curcontext}" opm="$compstate[pattern_match]"
 
 if [[ "$1" = -a* ]]; then
@@ -58,6 +58,9 @@ if (( ! $+functions[compadd] )); then
     # else
       PREFIX="(#a${_comp_correct})$PREFIX"
     # fi
+
+    (( $_correct_group )) && _correct_expl[_correct_group]=${argv[(R)-*[JV]]}
+
     builtin compadd "$_correct_expl[@]" "$@"
   }
   trap 'unfunction compadd' EXIT INT
@@ -73,6 +76,8 @@ while [[ _comp_correct -le comax ]]; do
   _description corrections _correct_expl corrections \
                "e:$_comp_correct" "o:$PREFIX$SUFFIX"
 
+  _correct_group="$_correct_expl[(I)-*[JV]]"
+
   if _complete; then
     if zstyle -t ":completion:${curcontext}:" insert-unambiguous &&
        [[ "${#compstate[unambiguous]}" -ge "${#:-$PREFIX$SUFFIX}" ]]; then
diff --git a/Completion/Base/Utility/_describe b/Completion/Base/Utility/_describe
index cd891368a..9ad04c224 100644
--- a/Completion/Base/Utility/_describe
+++ b/Completion/Base/Utility/_describe
@@ -78,9 +78,13 @@ while _tags; do
         fi
     
         if [[ -n $_mats ]]; then
-          compadd "$_opts[@]" "${(@)_expl:/-J/-2V}" -O $_strs -D $_mats -s $_strs
+          compadd "$_opts[@]" "${(@)_expl:/-J/-2V}" -D $_strs - \
+                  "${(@M)${(@P)_strs}##([^:\\]|\\?)##}"
+          compadd "$_opts[@]" "${(@)_expl:/-J/-2V}" -D $_mats - \
+                  "${(@M)${(@P)_strs}##([^:\\]|\\?)##}"
         else
-          compadd "$_opts[@]" "${(@)_expl:/-J/-2V}" -O $_strs -a $_strs
+          compadd "$_opts[@]" "${(@)_expl:/-J/-2V}" -D $_strs - \
+                  "${(@M)${(@P)_strs}##([^:\\]|\\?)##}"
         fi
       done
       set - "$_argv[@]"