summaryrefslogtreecommitdiffstats
path: root/Completion/Base/Core/_message
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Base/Core/_message')
-rw-r--r--Completion/Base/Core/_message28
1 files changed, 15 insertions, 13 deletions
diff --git a/Completion/Base/Core/_message b/Completion/Base/Core/_message
index dbeed4a88..8c3f351f6 100644
--- a/Completion/Base/Core/_message
+++ b/Completion/Base/Core/_message
@@ -1,19 +1,26 @@
#autoload
-local format raw gopt
+local format raw
+local -a gopt
+local -A opth
-if [[ "$1" = -e ]]; then
+zparseopts -A opth -D -F - \
+ {1+,2+,V+:,J+:}=gopt F: M: n o: q s: S: x: X: \
+ e r \
+|| return
+
+if (( $+opth[-e] )); then
local expl ret=1 tag
_comp_mesg=yes
- if (( $# > 2 )); then
- tag="$2"
+ if (( $# > 1 )); then
+ tag=$1
shift
else
tag="$curtag"
fi
- _tags "$tag" && while _next_label "$tag" expl "$2"; do
+ _tags "$tag" && while _next_label "$tag" expl "$1"; do
compadd ${expl:/-X/-x}
ret=0
done
@@ -24,22 +31,17 @@ if [[ "$1" = -e ]]; then
return ret
fi
-gopt=()
-zparseopts -D -a gopt 1 2 V J
-
_tags messages || return 1
-if [[ "$1" = -r ]]; then
- raw=yes
- shift
- format="$1"
+if (( $+opth[-r] )); then
+ raw=yes format=$1
else
zstyle -s ":completion:${curcontext}:messages" format format ||
zstyle -s ":completion:${curcontext}:descriptions" format format
fi
if [[ -n "$format$raw" ]]; then
- [[ -z "$raw" ]] && zformat -F format "$format" "d:$1" "${(@)argv[2,-1]}"
+ [[ -z "$raw" ]] && zformat -Fq format "$format" "d:$1" "${(@)argv[2,-1]}"
builtin compadd "$gopt[@]" -x "$format"
_comp_mesg=yes
fi