about summary refs log tree commit diff
path: root/Completion/Core/_alternative
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Core/_alternative')
-rw-r--r--Completion/Core/_alternative10
1 files changed, 6 insertions, 4 deletions
diff --git a/Completion/Core/_alternative b/Completion/Core/_alternative
index 73292cb52..482e9db51 100644
--- a/Completion/Core/_alternative
+++ b/Completion/Core/_alternative
@@ -44,24 +44,26 @@ while _tags; do
 
         # Anything inside `(...)' is added directly.
 
-        compadd "$subopts[@]" "$expl[@]" - ${=action[2,-2]}
+        _loop "${def%%:*}" expl "$descr" \
+            compadd "$subopts[@]" - ${=action[2,-2]}
       elif [[ "$action" = \{*\} ]]; then
 
         # A string in braces is evaluated.
 
-        eval "$action[2,-2]"
+        _loop "${def%%:*}" expl "$descr" eval "$action[2,-2]"
       elif [[ "$action" = \ * ]]; then
 
         # If the action starts with a space, we just call it.
 
         eval "action=( $action )"
-        "$action[@]"
+        _loop "${def%%:*}" expl "$descr" "$action[@]"
       else
 
         # Otherwise we call it with the description-arguments built above.
 
         eval "action=( $action )"
-        "$action[1]" "$subopts[@]" "$expl[@]" "${(@)action[2,-1]}"
+        _loop "${def%%:*}" expl "$descr" \
+            "$action[1]" "$subopts[@]" "${(@)action[2,-1]}"
       fi
     fi
   done