#compdef acroread

local curcontext="$curcontext" state line

# Try extracting the version number directly from the executable.
# (This will fail if the executable is a wrapper script for acroread.)
local ver=${${${(f)"$(<$commands[$words[1]])"}:#^ver=*}##ver=}
[[ -n $ver ]] && _acroread_version=$ver

if (( ! $+_acroread_version )); then
  local acropath=${${(s. .)${${(f)"$($words[1] -help 2>&1)"}[1]}}[2]}
  _acroread_version=${${${(f)"$(<$acropath)"}:#^ver=*}##ver=}
fi

if [[ $_acroread_version == 7.* ]]; then
  _arguments -C \
    '--display=:X display:_x_display' \
    '--screen=:X screen (overrides the screen part of DISPLAY)' \
    --sync \
    '-geometry:[<width>x<height>][{+|-}<x offset>{+|-}<y offset>]' \
    -help \
    -iconic \
    '*-setenv:<var>=<value>' \
    -tempFile \
    '-tempFileTitle:title' \
    -openInNewWindow \
    -version \
    '-visual:X visual:_x_visual' \
    '-toPostScript:*::PostScript conversion options:= ->tops' \
    '*:PDF file:_files -g "*.(#i)pdf(-.)"' && return

  [[ -n "$state" ]] && _arguments \
    '-pairs:*:pdf_file_1 ps_file_1 ...:_files -g "*.(#i)(pdf|ps)(-.)"' \
    -binary \
    '-start:integer' \
    '-end:integer' \
    -optimizeForSpeed \
    -landscape \
    -reverse \
    '(-even)-odd' \
    '(-odd)-even' \
    -commentsOff \
    -annotsOff \
    '(-level3)-level2' \
    '(-level2)-level3' \
    -printerhalftones \
    -saveVM \
    '-scale:integer' \
    -shrink \
    -expand \
    '-size:page size (or custom size wxh in points):(letter tabloid ledger legal executive a3 a4 a5 b4 b5)' \
    '-transQuality:transparency flattening level:(1 2 3 4 5)' \
    '*:PDF file:_files -g "*.(#i)pdf(-.)"' && return
else
_x_arguments -C \
  -help \
  -helpall \
  \*-iconic \
  \*+iconic \
  '-name:application name:_x_name' \
  '*-setenv:<var>=<value>' \
  -tempFile \
  '-tempFileTitle:title' \
  '(+useFrontEndProgram)-useFrontEndProgram' \
  '(-useFrontEndProgram)+useFrontEndProgram' \
  '-visual:X visual:_x_visual' \
  '-xrm:X resource specification:_x_resource' \
  '-toPostScript:*::PostScript conversion options:= ->tops' \
  '*:PDF file:_files -g "*.(#i)pdf(-.)"' && return

[[ -n "$state" ]] && _arguments \
  '-pairs:*:pdf_file_1 ps_file_1 ...:_files -g "*.(#i)(pdf|ps)(-.)"' \
  -binary \
  '-start:integer' \
  '-end:integer' \
  -optimizeForSpeed \
  -landscape \
  -reverse \
  '(-even)-odd' \
  '(-odd)-even' \
  -commentsOff \
  '(-level2 -level3)-level1' \
  '(-level1 -level3)-level2' \
  '(-level1 -level2)-level3' \
  -printerhalftones \
  -saveVM \
  '-scale:integer' \
  -shrink \
  '-size:page size (or custom size wxh in points):(letter tabloid ledger legal executive a3 a4 a5 b4 b5)' \
  '-transQuality:transparency flattening level:(1 2 3 4 5)' \
  '*:PDF file:_files -g "*.(#i)pdf(-.)"' && return
fi

return 1
