#compdef mixerctl

: ${(A)_cache_mixerctlvars:=${${(f)"$(mixerctl -a)"}%%=*}}
_arguments -s -S -A "-*" \
  '(-q -t *)-a[Print all device variables and their current values]' \
  '-f[Specify an alternative audio mixing device]:file:_files -g "*(-%c)"' \
  '(-q -t)-n[Suppress printing of the variable name]' \
  '(-a -n -v)-q[Suppress all printing when setting a variable]' \
  '(-a -n -v)-t[Attempt to select the next possible value of an enum]' \
  '(-q -t)-v[Show all possible values of variables]' \
  '(-a)*:mixerctl variable:_multi_parts -i -S = -q . _cache_mixerctlvars'
