summary refs log tree commit diff
path: root/Completion/Builtins/_vars_eq
blob: 6ccf6a39cf7ed857b90f46f33d26de1277c139e0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#compdef declare export integer float local readonly typeset

local expl state line func i use curcontext="$curcontext"
local -A allargs
local -a args

allargs=( \
  A '(-E -F -L -R -T -U -Z -a -f -i -m)-A[specify that arguments refer to associative arrays]' \
  E '(-A -F -L -R -T -U -Z -a -f -i -m)-E[represent internally as floating point, use engineering notation on output]' \
  F '(-A -E -L -R -T -U -Z -a -f -i -m)-F[represent internally as floating point, use fixed point decimal on output]' \
  L '(-A -E -F -f -i)-L+[left justify and remove leading blanks from value]:width' \
  R '(-A -E -F -f -i)-R+[right justify and fill with leading blanks]:width' \
  T '(-A -E -F -a -f -g -h -i -l -m -t)-T[tie scalar to array]' \
  U '(-A -E -F -i)-U[keep array values unique and suppress alias expansion for functions]' \
  Uf '(-E -F -i)-U[suppress alias expansion for functions]' \
  Up '(-E -F -i)-U[keep array values unique]' \
  Z '(-A -E -F -f -i)-Z+[right justify and fill with leading zeros]:width' \
  a '(-A -E -F -T -f -i)-a[specify that arguments refer to arrays]' \
  f '(-A -E -F -L -R -T -Z -a -g -h -i -l -r -x)-f[specify that arguments refer to functions]' \
  g '(-T -f)-+g[do not restrict parameter to local scope]' \
  h '(-T -f)-+h[hide parameter]' \
  i '(-A -E -F -T -f)-+i[represent internally as an integer]' \
  l '(-T -f)-l[convert the value to lowercase]' \
  m '(-A -E -F -T -i)-m[treat arguments as patterns]' \
  r '(-f)-+r[mark parameters as readonly]' \
  t '(-T)-+t[tag parameters and turn on execution tracing for functions]' \
  tf '(-T)-+t[turn on execution tracing for functions]' \
  tp '(-T)-+t[tag parameters]' \
  u '-u[convert the value to uppercase or mark function for autoloading]' \
  uf '-u[mark function for autoloadling]' \
  up '-u[convert the value to uppercase]' \
  x '(-f)-+x[export parameter]' )

use="AEFLRTUZafghilmrtux"

case ${words[1]} in
  float) use="EFghlrtux";;
  functions)
    use="Umtu"
    func=f
  ;;
  integer) use="ghilrtux" ;;
  readonly) use="${use/r/}" ;;
  local) use="${use/f/}" ;&
  export) use="${${use/g/}/x/}" ;;
esac

[[ -z "${words[(r)-*f*]}" ]] || func=f
[[ -z "${words[(r)-*[aA]*]}" ]] || func=p
   
for ((i=1;i<=$#use;++i)); do
  args=( "${args[@]}" \
      ${allargs[${use[$i]}${${(s::)use[$i]}[(r)[Uut]]:+$func}]} )
done

_arguments -C -s "${args[@]}" '*:vars:->vars_eq'

if [[ "$state" = vars_eq ]]; then
  if [[ $func = f ]]; then
    _functions
  elif [[ "$PREFIX" = *\=* ]]; then
    compstate[parameter]="${PREFIX%%\=*}"
    compset -P 1 '*='
    _value
  elif (( $+opt_args[-a] || $+opt_args[-A] )); then
    _parameters -q
  else
    _parameters -q -S '='
  fi
fi