26763: fix problem on failed cd -s to relative path
[zsh.git] / Completion / Zsh / Command / _zmodload
blobc11cf18ebaf192391accdb501660aad2d0aed9e2
1 #compdef zmodload
3 local suf comp state line expl curcontext="$curcontext" ret=1 NORMARG
4 typeset -A opt_args
5 suf=()
7 _arguments -n -C -A "-*" -s \
8   '(-i -u -d -a -b -c -I -p -f -e)-A[create module aliases]' \
9   '-u[unload module]' \
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]
32   local -a features
34   if [[ $modules[$module] != loaded ]]; then
35     _message "features for unloaded module"
36   else
37     zmodload -lFP features $module
38     if compset -P -; then
39       # only enabled features needed
40       features=(${${features:#-*}##?})
41     elif compset -P +; then
42       # only disabled features needed
43       features=(${${features:#+*}##?})
44     fi
45     _wanted features expl feature compadd -a features
46   fi
47 else
48   comp=( files aliases )
49   if (( $+opt_args[-u] )); then
50     if (( $+opt_args[-b] || $+opt_args[-a] )); then
51       comp=( builtins )
52     else
53       comp=( loadedmodules aliases )
54     fi
55   fi
56   (( $+opt_args[-a] && CURRENT > 3 )) && comp=( builtins )
58   _tags "$comp[@]"
59   while _tags; do
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
68   done
69   return ret