#compdef a2ps

# This is for the GNU version of a2ps.

if [[ "$words[1]" != "$_a2ps_cache_cmd" ]]; then
  local descr

  _a2ps_cache_cmd="$words[1]"

  descr=( "${(@)${(f@)$(_call_program features LC_ALL=C $words[1] --list=features)//
 /	}:#}" )

  _a2ps_cache_values=(
      "${descr[(r)Known [Ss]tyle [Ss]heets*]#*	}"
      "${descr[(r)Known [Ee]ncodings*]#*	}"
      "${descr[(r)Known [Mm]edia*]#*	}"
      "${descr[(r)Known [Pp]rologues*]#*	}"
      "${descr[(r)Known PostScript Printer Descriptions*]#*	}"
      "${descr[(r)Known [Oo]utput [Dd]estination*]#*	}"
      "${descr[(r)Known [Uu]ser [Oo]ptions*]#*	}"
      "${descr[(r)Known Variables*]#*	}"
  )
fi

_arguments '*:input file:_files' -- \
           '*\*:toggle:(yes no)' \
           '*=DIRECTION:direction:(rows columns)' \
           '*=TYPE:type:(r n nr rn any)' \
	   '--highlight-level*:highlight:(none normal heavy)' \
	   '--version-control*:version control:(none off t numbered nil 
		                                existing never simple)' \
	   "--pretty-print*::style:(${_a2ps_cache_values[1]})" \
	   "--encoding*:encoding:(${_a2ps_cache_values[2]})" \
	   "--medium*::medium:(${_a2ps_cache_values[3]})" \
	   "--prologue*::prologue:(${_a2ps_cache_values[4]})" \
	   "--ppd*::printer description:(${_a2ps_cache_values[5]})" \
	   "--printer*::printer:(${_a2ps_cache_values[6]})" \
	   "--user-option*::user option:(${_a2ps_cache_values[7]})" \
	   "--variable*::variable:(${_a2ps_cache_values[8]})"
