From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14546 invoked from network); 25 Apr 2005 08:42:21 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 25 Apr 2005 08:42:21 -0000 Received: (qmail 7397 invoked from network); 25 Apr 2005 08:42:13 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 25 Apr 2005 08:42:13 -0000 Received: (qmail 3886 invoked by alias); 25 Apr 2005 08:42:10 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 21180 Received: (qmail 3875 invoked from network); 25 Apr 2005 08:42:09 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 25 Apr 2005 08:42:09 -0000 Received: (qmail 7118 invoked from network); 25 Apr 2005 08:42:09 -0000 Received: from pat.uio.no (129.240.130.16) by a.mx.sunsite.dk with SMTP; 25 Apr 2005 08:42:05 -0000 Received: from mail-mx3.uio.no ([129.240.10.44]) by pat.uio.no with esmtp (Exim 4.43) id 1DPzAL-0001Ga-CZ for zsh-workers@sunsite.dk; Mon, 25 Apr 2005 10:42:05 +0200 Received: from 115.80-203-46.nextgentel.com ([80.203.46.115] helo=fox.venod.com) by mail-mx3.uio.no with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.43) id 1DPzAI-0005z2-LH for zsh-workers@sunsite.dk; Mon, 25 Apr 2005 10:42:02 +0200 Received: (qmail 812 invoked by uid 1000); 25 Apr 2005 08:41:57 -0000 Date: Mon, 25 Apr 2005 10:41:57 +0200 From: Haakon Riiser To: zsh-workers@sunsite.dk Cc: Oliver Kiddle Subject: Re: Updated _acroread completer Message-ID: <20050425084156.GA483@fox> Mail-Followup-To: zsh-workers@sunsite.dk, Oliver Kiddle References: <20050414134703.GA7862@s> <20050415111158.GA1709@s> <7344.1114415007@trentino.groupinfra.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="5mCyUwZo2JvN/JJP" Content-Disposition: inline In-Reply-To: <7344.1114415007@trentino.groupinfra.com> User-Agent: Mutt/1.5.9i X-UiO-Spam-info: not spam, SpamAssassin (score=-3.848, required 12, autolearn=disabled, AWL 1.10, FORGED_RCVD_HELO 0.05, UIO_MAIL_IS_INTERNAL -5.00) X-Spam-Checker-Version: SpamAssassin 3.0.2 on a.mx.sunsite.dk X-Spam-Level: X-Spam-Status: No, score=-2.6 required=6.0 tests=AWL,BAYES_00 autolearn=ham version=3.0.2 X-Spam-Hits: -2.6 --5mCyUwZo2JvN/JJP Content-Type: text/plain; charset=us-ascii Content-Disposition: inline [Oliver Kiddle] >> The output of acroread -version cannot be piped to stdout for >> some reason, so the version number must be read from >> ACROREAD-PREFIX/Reader/AcroVersion. Since acroread might have >> been started via a wrapper script, the only failsafe way of >> determining ACROREAD-PREFIX is to look at the output of acroread >> -help. > > Unfortunately, this doesn't work on the system I tried it on, using > Adobe's rpm. /usr/bin/acroread is a symbolic like to > /usr/local/Adobe/Acrobat7.0/bin/acroread. Handling that involves using ls > to get the symlink destination. > > Is acroread always a script? The following works well (and very quickly) > on any system I have access to: > grep '^ver=' =acroread > > From a completion function, we can use $commands[$words[1]] instead > of =acroread. It doesn't work when acroread is a wrapper script, which it is in my case. (I used a wrapper instead of a symlink, because the script needs to do some things before it starts acroread, such as turning off core dumps (some versions of acroread 5.x used to crash a _lot_).) Even if I rename the script to something other than 'acroread', I still couldn't use =acroread since the real acroread executable isn't in my PATH. :-/ 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. -- Haakon --5mCyUwZo2JvN/JJP Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=_acroread #compdef acroread local curcontext="$curcontext" state line # The output of acroread -version cannot be piped to stdout for some reason, so # the version number must be read from ACROREAD-PREFIX/Reader/AcroVersion. # Since acroread might have been started via a wrapper script, the only # failsafe way of determining ACROREAD-PREFIX is to look at the output of # acroread -help. if [[ -z $_acroread_version ]]; then local acropath=${${(s. .)${${(f)"$($words[1] -help 2>&1)"}[1]}}[2]} while [[ -L $acropath ]]; do acropath=$(perl -e 'print readlink($ARGV[0])' $acropath) done local version_file=${acropath%/*}/../Reader/AcroVersion [[ -r $version_file ]] && _acroread_version=$(< $version_file) fi if [[ $_acroread_version == 7.* ]]; then _arguments -C \ '--display=:X display:_x_display' \ '--screen=:X screen (overrides the screen part of DISPLAY)' \ --sync \ '-geometry:[x][{+|-}{+|-}]' \ -help \ -iconic \ '*-setenv:=' \ -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:=' \ -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 --5mCyUwZo2JvN/JJP--