1#compdef acroread
2
3local curcontext="$curcontext" state line
4local cmdfile
5
6if [[ -z $_acroread_version ]]; then
7  _acroread_version="$($words[1] -version 2>/dev/null)"
8fi
9
10if [[ -z $_acroread_version ]]; then
11  if [[ $words[1] = */* && -x $words[1] ]]; then
12    cmdfile=$words[1]
13  elif [[ -x $commands[$words[1]] ]]; then
14    cmdfile=$commands[$words[1]]
15  fi
16
17  # Try extracting the version number directly from the executable.
18  # (This will fail if the executable is a wrapper script for acroread.)
19  _acroread_version=${${(M)${(f)"$(<$cmdfile)"}:#ver=*}##ver=}
20
21  if [[ -z $_acroread_version ]]; then
22    local acropath=${${(s. .)${${(f)"$($words[1] -help 2>&1)"}[1]}}[2]}
23    if [[ -r $acropath ]]; then
24      _acroread_version=${${(M)${(f)"$(<$acropath)"}:#ver=*}##ver=}
25    fi
26  fi
27fi
28
29if [[ $_acroread_version == [789].* ]]; then
30  local -a extra_args
31  extra_args=()
32  if [[ $_acroread_version == [89].* ]]; then
33    extra_args+=(-man '-installCertificate:server ip::server port')
34  fi
35  if [[ $_acroread_version == 9.* ]]; then
36    extra_args+=(-openInNewInstance)
37  fi
38  _arguments -C \
39    "${extra_args[@]}" \
40    '--display=:X display:_x_display' \
41    '--screen=:X screen (overrides the screen part of DISPLAY)' \
42    --sync \
43    '-geometry:[<width>x<height>][{+|-}<x offset>{+|-}<y offset>]' \
44    -help \
45    -iconic \
46    '*-setenv:<var>=<value>' \
47    -tempFile \
48    '-tempFileTitle:title' \
49    -openInNewWindow \
50    -version \
51    '-visual:X visual:_x_visual' \
52    '-toPostScript:*::PostScript conversion options:= ->tops' \
53    '*:PDF file:_files -g "*.(#i)pdf(-.)"' && return
54
55  [[ -n "$state" ]] && _arguments \
56    '-pairs:*:pdf_file_1 ps_file_1 ...:_files -g "*.(#i)(pdf|ps)(-.)"' \
57    -binary \
58    '-start:integer' \
59    '-end:integer' \
60    -optimizeForSpeed \
61    -landscape \
62    -reverse \
63    '(-even)-odd' \
64    '(-odd)-even' \
65    -commentsOff \
66    -annotsOff \
67    -stampsOff \
68    -markupsOn \
69    '(-level3)-level2' \
70    '(-level2)-level3' \
71    -printerhalftones \
72    -saveVM \
73    '-scale:integer' \
74    -shrink \
75    -expand \
76    '-size:page size (or custom size wxh in points):(letter tabloid ledger legal executive a3 a4 a5 b4 b5)' \
77    '-transQuality:transparency flattening level:(1 2 3 4 5)' \
78    '*:PDF file:_files -g "*.(#i)pdf(-.)"' && return
79else
80  _x_arguments -C \
81    -help \
82    -helpall \
83    \*-iconic \
84    \*+iconic \
85    '-name:application name:_x_name' \
86    '*-setenv:<var>=<value>' \
87    -tempFile \
88    '-tempFileTitle:title' \
89    '(+useFrontEndProgram)-useFrontEndProgram' \
90    '(-useFrontEndProgram)+useFrontEndProgram' \
91    '-visual:X visual:_x_visual' \
92    '-xrm:X resource specification:_x_resource' \
93    '-toPostScript:*::PostScript conversion options:= ->tops' \
94    '*:PDF file:_files -g "*.(#i)pdf(-.)"' && return
95
96  [[ -n "$state" ]] && _arguments \
97    '-pairs:*:pdf_file_1 ps_file_1 ...:_files -g "*.(#i)(pdf|ps)(-.)"' \
98    -binary \
99    '-start:integer' \
100    '-end:integer' \
101    -optimizeForSpeed \
102    -landscape \
103    -reverse \
104    '(-even)-odd' \
105    '(-odd)-even' \
106    -commentsOff \
107    '(-level2 -level3)-level1' \
108    '(-level1 -level3)-level2' \
109    '(-level1 -level2)-level3' \
110    -printerhalftones \
111    -saveVM \
112    '-scale:integer' \
113    -shrink \
114    '-size:page size (or custom size wxh in points):(letter tabloid ledger legal executive a3 a4 a5 b4 b5)' \
115    '-transQuality:transparency flattening level:(1 2 3 4 5)' \
116    '*:PDF file:_files -g "*.(#i)pdf(-.)"' && return
117fi
118
119return 1
120