From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29574 invoked from network); 1 Mar 2007 15:22:42 -0000 X-Spam-Checker-Version: SpamAssassin 3.1.8 (2007-02-13) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,FORGED_RCVD_HELO autolearn=ham version=3.1.8 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 1 Mar 2007 15:22:42 -0000 Received-SPF: none (ns1.primenet.com.au: domain at sunsite.dk does not designate permitted sender hosts) Received: (qmail 7472 invoked from network); 1 Mar 2007 15:22:34 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 1 Mar 2007 15:22:34 -0000 Received: (qmail 12648 invoked by alias); 1 Mar 2007 15:22:30 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 23200 Received: (qmail 12639 invoked from network); 1 Mar 2007 15:22:30 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 1 Mar 2007 15:22:30 -0000 Received: (qmail 7022 invoked from network); 1 Mar 2007 15:22:30 -0000 Received: from cluster-c.mailcontrol.com (168.143.177.190) by a.mx.sunsite.dk with SMTP; 1 Mar 2007 15:22:24 -0000 Received: from cameurexb01.EUROPE.ROOT.PRI ([62.189.241.200]) by rly13c.srv.mailcontrol.com (MailControl) with ESMTP id l21FMGXh018963 for ; Thu, 1 Mar 2007 15:22:17 GMT Received: from news01.csr.com ([10.103.143.38]) by cameurexb01.EUROPE.ROOT.PRI with Microsoft SMTPSVC(6.0.3790.1830); Thu, 1 Mar 2007 15:22:16 +0000 Received: from news01.csr.com (localhost.localdomain [127.0.0.1]) by news01.csr.com (8.13.8/8.13.4) with ESMTP id l21FMB9P002842 for ; Thu, 1 Mar 2007 15:22:12 GMT Received: from csr.com (pws@localhost) by news01.csr.com (8.13.8/8.13.8/Submit) with ESMTP id l21FMBR7002839 for ; Thu, 1 Mar 2007 15:22:11 GMT Message-Id: <200703011522.l21FMBR7002839@news01.csr.com> X-Authentication-Warning: news01.csr.com: pws owned process doing -bs To: Zsh hackers list Subject: Re: two completion problems. In-reply-to: <20070301141210.GA869@fermat.math.technion.ac.il> References: <20070301141210.GA869@fermat.math.technion.ac.il> Comments: In-reply-to "Zvi Har'El" message dated "Thu, 01 Mar 2007 16:12:10 +0200." Date: Thu, 01 Mar 2007 15:22:11 +0000 From: Peter Stephenson X-OriginalArrivalTime: 01 Mar 2007 15:22:16.0640 (UTC) FILETIME=[65446C00:01C75C15] Content-Type: text/plain MIME-Version: 1.0 X-Scanned-By: MailControl A-07-06-80 (www.mailcontrol.com) on 10.67.0.123 "Zvi Har'El" wrote: > I am using the latest CVS have two completion problems: > 1) acroread completion fails: > > ~$ acroread > _acroread:12: no such file or directory: line We search for the path to acrobat in order to check its version number with the following substitution ($words[1] will be "acroread" or some modification thereof): ${${(s. .)${${(f)"$($words[1] -help 2>&1)"}[1]}}[2]} This only works if the path is the second word on the first non-empty line. I get '/usr/local/bin/acroread'. Presumably this is different in your version. However, it's already been confused by that point by the substitution _acroread_version=${${${(Mf)"$(<$commands[$words[1]])"}:#ver=*}##ver=} I think that (M) is in the wrong place and this should be: _acroread_version=${${(M)${(f)"$(<$commands[$words[1]])"}:#ver=*}##ver=} I haven't checked when this got changed, but the previous version should never have worked; parameter flags only apply (directly) to the current level of substitution. The following fixes that, and makes the test for whether we can read the file on the second check safer. (For me this test is redundant since it refers to the same file we just checked, but after fixing the version extraction it doesn't get that far.) Index: Completion/X/Command/_acroread =================================================================== RCS file: /cvsroot/zsh/zsh/Completion/X/Command/_acroread,v retrieving revision 1.6 diff -u -r1.6 _acroread --- Completion/X/Command/_acroread 26 Mar 2006 15:15:10 -0000 1.6 +++ Completion/X/Command/_acroread 1 Mar 2007 15:08:34 -0000 @@ -1,15 +1,25 @@ #compdef acroread local curcontext="$curcontext" state line +local cmdfile -# Try extracting the version number directly from the executable. -# (This will fail if the executable is a wrapper script for acroread.) -local ver=${${${(Mf)"$(<$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=${${${(Mf)"$(<$acropath)"}:#ver=*}##ver=} +if [[ $words[1] = */* && -x $words[1] ]]; then + cmdfile=$words[1] +elif [[ -x $commands[$words[1]] ]]; then + cmdfile=$commands[$words[1]] +fi + +if [[ -z $_acroread_version ]]; then + # Try extracting the version number directly from the executable. + # (This will fail if the executable is a wrapper script for acroread.) + _acroread_version=${${(M)${(f)"$(<$cmdfile)"}:#ver=*}##ver=} + + if [[ -z $_acroread_version ]]; then + local acropath=${${(s. .)${${(f)"$($words[1] -help 2>&1)"}[1]}}[2]} + if [[ -r $acropath ]]; then + _acroread_version=${${(M)${(f)"$(<$acropath)"}:#ver=*}##ver=} + fi + fi fi if [[ $_acroread_version == 7.* ]]; then -- Peter Stephenson Software Engineer CSR PLC, Churchill House, Cambridge Business Park, Cowley Road Cambridge, CB4 0WZ, UK Tel: +44 (0)1223 692070 To access the latest news from CSR copy this link into a web browser: http://www.csr.com/email_sig.php To get further information regarding CSR, please visit our Investor Relations page at http://ir.csr.com/csr/about/overview