Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Updated _acroread completer
- X-seq: zsh-workers 21188
- From: Haakon Riiser <haakon.riiser@xxxxxxxxxx>
- To: Zsh hackers list <zsh-workers@xxxxxxxxxx>
- Subject: Re: Updated _acroread completer
- Date: Mon, 25 Apr 2005 15:00:02 +0200
- In-reply-to: <200504250939.j3P9dqih005645@xxxxxxxxxxxxxx>
- Mail-followup-to: Zsh hackers list <zsh-workers@xxxxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <20050414134703.GA7862@s> <20050415111158.GA1709@s> <7344.1114415007@xxxxxxxxxxxxxxxxxxxxxxx> <20050425084156.GA483@fox> <200504250939.j3P9dqih005645@xxxxxxxxxxxxxx>
[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