mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-09-18 03:11:15 +02:00
78 lines
2.8 KiB
Text
78 lines
2.8 KiB
Text
#compdef zmodload
|
|
|
|
local suf comp state line expl curcontext="$curcontext" ret=1 NORMARG
|
|
typeset -A opt_args
|
|
suf=()
|
|
|
|
_arguments -n -C -S -s \
|
|
'(-R -P -i -u -d -a -b -c -I -p -f -e -F -m)-A[create module aliases]' \
|
|
'(-)-R[remove module aliases]' \
|
|
'(-A -R -F -L -m -P -l -e)-u[unload module]' \
|
|
'(-d -e -l)-a[autoload module]' \
|
|
'(-c -d -I -p -f -F -P -l -m -A -R)-b[autoload module for builtins]' \
|
|
'(-b -d -I -p -f -F -P -l -m -A -R)-c[autoload module for condition codes]' \
|
|
'(-A -R -F -I -P -a -b -c -e -f -i -l -m -p)-d[list or specify module dependencies]' \
|
|
'(-i -u -d -a -b -c -p -f -L -R)-e[test if modules are loaded]' \
|
|
'(-b -c -d -I -p -F -P -l -m -A -R)-f[autoload module for math functions]' \
|
|
'(-u -b -c -d -p -f -A -R -I)-F[handle features]' \
|
|
'(-u -b -c -d -p -f -A -R -I)-m[treat feature arguments as patterns]' \
|
|
'(-d -e)-i[suppress error if command would do nothing]' \
|
|
'(-d -e -L)-s[suppress error if module is not available]' \
|
|
'(-b -c -d -p -f -F -P -m)-I[define infix condition names]' \
|
|
'(-u -b -c -d -p -f -A -R)-l[list features]' \
|
|
'(-e -u)-L[output in the form of calls to zmodload]' \
|
|
'(-b -c -d -I -f -F -P -l -m -A -R)-p[autoload module for parameters]' \
|
|
'(-u -b -c -d -p -f -A -R)-P[array param for features]:array name:_parameters' \
|
|
'(-)*:param:->params' && ret=0
|
|
|
|
[[ $state = params ]] || return ret
|
|
|
|
if (( $+opt_args[-A] )); then
|
|
compset -S '=*' || compset -P '*=' || suf=( -S '=' )
|
|
fi
|
|
|
|
if (( $+opt_args[-F] && CURRENT > NORMARG )); then
|
|
local module=$words[NORMARG]
|
|
local -a features
|
|
|
|
if [[ $modules[$module] != loaded ]]; then
|
|
_message -e features "feature for unloaded module"
|
|
else
|
|
zmodload -lFP features $module
|
|
if compset -P -; then
|
|
# only enabled features needed
|
|
features=(${${features:#-*}##?})
|
|
elif compset -P +; then
|
|
# only disabled features needed
|
|
features=(${${features:#+*}##?})
|
|
else
|
|
# complete opposite of current feature state, + is default
|
|
features=(${${features#-}/(#s)+/-})
|
|
fi
|
|
_wanted features expl feature compadd -a features
|
|
fi
|
|
else
|
|
comp=( files aliases )
|
|
if (( $+opt_args[-u] )); then
|
|
if (( $+opt_args[-b] || $+opt_args[-a] )); then
|
|
comp=( builtins )
|
|
else
|
|
comp=( loadedmodules aliases )
|
|
fi
|
|
fi
|
|
(( $+opt_args[-a] && CURRENT > 3 )) && comp=( builtins )
|
|
|
|
_tags "$comp[@]"
|
|
while _tags; do
|
|
_requested builtins expl 'builtin command' \
|
|
compadd "$@" -k builtins && ret=0
|
|
_requested loadedmodules expl 'loaded module' \
|
|
compadd -k 'modules[(R)loaded]' && ret=0
|
|
_requested files expl 'module file' \
|
|
_files -W module_path -g '*.(dll|s[ol]|bundle)(:r)' && ret=0
|
|
_requested aliases expl 'module alias' \
|
|
compadd "$suf[@]" -k 'modules[(R)alias*]' && ret=0
|
|
(( ret )) || return 0
|
|
done
|
|
return ret
|
|
fi
|