Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Updated _acroread completer



[Peter Stephenson]

> Haakon Riiser wrote:
> > So I'll just have to resolve the symlink using readlink.  I assume
> > the most portable way to do this is perl, unless there is a way
> > to make zsh expand the link itself.  I have attached a version that
> > does this.  Should handle any level of symbolic links that point to
> > new symbolic links.
> 
> You can use the zsh/stat library.
> 
>   zmodload -i zsh/stat
>   stat -A ln +link ~/perforce
>   print $ln[1]
>   /pws/perforce

Thanks, but I did away with that completely.  There's really no need
to think about symblic links and the version file when the version
number actually is embedded in the ACROREAD-PREFIX/bin/acroread
script.  Attached to this mail is the latest version that only runs
acroread -help to determine the patch to the real executable when
the version number was not found directly in $command[$words[1]].

By the way, it uses "sed -n 's/^ver=//p' FILE" to extract the
version.  Is it preferable to use zsh's own string functions to
do this?  The code tends to become quite hard to read, and I usually
need to spend much more time writing it than when I use sed or awk.

-- 
 Haakon
#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=$(sed -n 's/^ver=//p' $commands[$words[1]] 2>/dev/null)
[[ -n $ver ]] && _acroread_version=$ver

if [[ -z $_acroread_version ]]; then
    local acropath=${${(s. .)${${(f)"$($words[1] -help 2>&1)"}[1]}}[2]}
    _acroread_version=$(sed -n 's/^ver=//p' "$acropath" 2>/dev/null)
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


Messages sorted by: Reverse Date, Date, Thread, Author