3 local suf comp state line expl curcontext="$curcontext" ret=1 NORMARG
7 _arguments -n -C -A "-*" -s \
8 '(-i -u -d -a -b -c -I -p -f -e)-A[create module aliases]' \
10 '(-e)-a[autoload module]' \
11 '(-c -I -p -f)-b[autoload module for builtins]' \
12 '(-b -I -p -f)-c[autoload module for condition codes]' \
13 '(-i)-d[list or specify module dependencies]' \
14 '(-i -u -d -a -b -c -p -f -L -A)-e[test if modules are loaded]' \
15 '(-b -c -I -p)-f[autoload module for math functions]' \
16 '(-u -b -c -p -f -A)-F[handle features]' \
17 '(-d -e)-i[suppress error if command would do nothing]' \
18 '(-b -c -p -f)-I[define infix condition names]' \
19 '(-u -b -c -p -f -A)-l[list features]' \
20 '(-e -u)-L[output in the form of calls to zmodload]' \
21 '(-b -c -I -f)-p[autoload module for parameters]' \
22 '(-u -b -c -p -f -A)-P[array param for features]:array name:_parameters' \
23 '*:params:->params' && ret=0
25 [[ $state = params ]] || return ret
27 (( $+opt_args[-A] )) && compset -P '*=' || suf=( -S '=' )
30 if (( $+opt_args[-F] && CURRENT > NORMARG )); then
31 local module=$words[NORMARG]
34 if [[ $modules[$module] != loaded ]]; then
35 _message "features for unloaded module"
37 zmodload -lFP features $module
39 # only enabled features needed
40 features=(${${features:#-*}##?})
41 elif compset -P +; then
42 # only disabled features needed
43 features=(${${features:#+*}##?})
45 _wanted features expl feature compadd -a features
48 comp=( files aliases )
49 if (( $+opt_args[-u] )); then
50 if (( $+opt_args[-b] || $+opt_args[-a] )); then
53 comp=( loadedmodules aliases )
56 (( $+opt_args[-a] && CURRENT > 3 )) && comp=( builtins )
60 _requested builtins expl 'builtin command' \
61 compadd "$@" -k builtins && ret=0
62 _requested loadedmodules expl 'loaded modules' \
63 compadd -k 'modules[(R)loaded]' && ret=0
64 _requested files expl 'module file' \
65 _files -W module_path -/g '*.(dll|s[ol])(:r)' && ret=0
66 _requested aliases expl 'module alias' \
67 compadd "$suf[@]" -k 'modules[(R)alias*]' && ret=0