From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8656 invoked from network); 10 Jul 2005 06:15:11 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 10 Jul 2005 06:15:11 -0000 Received: (qmail 34602 invoked from network); 10 Jul 2005 06:15:01 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 10 Jul 2005 06:15:01 -0000 Received: (qmail 23683 invoked by alias); 10 Jul 2005 06:14:59 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 21415 Received: (qmail 23673 invoked from network); 10 Jul 2005 06:14:58 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 10 Jul 2005 06:14:58 -0000 Received: (qmail 34191 invoked from network); 10 Jul 2005 06:14:58 -0000 Received: from lead.cat.pdx.edu (131.252.208.91) by a.mx.sunsite.dk with SMTP; 10 Jul 2005 06:14:52 -0000 Received: from ruby.cat.pdx.edu (ruby.cat.pdx.edu [131.252.208.85]) by lead.cat.pdx.edu (8.13.1/8.13.1) with ESMTP id j6A6Eili026756 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Sat, 9 Jul 2005 23:14:45 -0700 (PDT) Received: from ruby.cat.pdx.edu (localhost.localdomain [127.0.0.1]) by ruby.cat.pdx.edu (8.13.1/8.12.10) with ESMTP id j6A6Eias029187 for ; Sat, 9 Jul 2005 23:14:44 -0700 Received: (from tspencer@localhost) by ruby.cat.pdx.edu (8.13.1/8.13.1/Submit) id j6A6EiPd029186 for zsh-workers@sunsite.dk; Sat, 9 Jul 2005 23:14:44 -0700 Date: Sat, 9 Jul 2005 23:14:44 -0700 From: Travis Spencer To: zsh-workers@sunsite.dk Subject: Re: PATCH: _unexpand Message-ID: <20050710061443.GA12208@ruby.cat.pdx.edu> Reply-To: zsh-workers@sunsite.dk Mail-Followup-To: zsh-workers@sunsite.dk Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1050710033857.ZM18234@candle.brasslantern.com> User-Agent: All mail clients sucks. This one just sucks less. X-Virus-Scanned: by amavisd-new X-Spam-Checker-Version: SpamAssassin 3.0.2 on a.mx.sunsite.dk X-Spam-Level: X-Spam-Status: No, score=-2.2 required=6.0 tests=AWL,BAYES_00 autolearn=ham version=3.0.2 X-Spam-Hits: -2.2 On 7/9/05, Bart Schaefer wrote: > On Jul 9, 6:18pm, Travis Spencer wrote: > } Subject: PATCH: _unexpand > } > } Here is a patch to add completion for the UNIX and Linux version > of > } unexpand. > > As the completion functions are preferentially installed all into a > single directory (it's an extra configure option to install them in > separate subdirectories), it is necessary to pick one location for > any function -- I suggest Completion/Unix/Command/_unexpand in this > case -- and have the function internally decide which version of the > command it should be completing for. Glancing over the CVS repository's directory structure and some posts about MAC-only programs made me unsure. Good to know. Thanks. > In other words, combine these into one file with an "if" test of > some sort, and then they could be added to the distribution. I looked through the existing functions in the distribution, and I saw a function that looked pretty good -- _pick_variant. That sounded like it might be useful, so I figured out how it worked and coded it up. It worked fine on my Linux box but not on my Solaris system. In my Sol environment, I have the FSF's unexpand at the head of my path. I wanted to test it with the Sun version, so I reexported my PATH and rehashed. To my surprise, the tab completion still showed the GNU flags. I double, triple and even quadruple checked my use of the _pick_variant function, and I'm sure I was calling it correctly. I think there is a bug in that function. Here is a typescript showing what I did. The first run (2345-2349) in the output is with the non-_pick_variant version of my completion. The second run (2350-2354), uses _pick_variant. Script started on Sat Jul 09 22:35:28 2005 2345 tspencer@murzim.cs (~) > unexpand --version unexpand (coreutils) 5.2.1 Written by David MacKenzie. Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 2346 tspencer@murzim.cs (~) > unexpand - --all -a -- convert all whitespace, instead of just initial whitespace --first-only -- convert only leading sequences of whitespace --help -- display help message and exit --tabs -t -- use comma separated list of tab positions --version -- output version information and exit 2346 tspencer@murzim.cs (~) > export PATH=/usr/bin:$PATH ; rehash 2347 tspencer@murzim.cs (~) > unexpand --version unexpand: illegal option -- - usage: unexpand [-a ] [-t tablist] [file ...] 2348 tspencer@murzim.cs (~) > unexpand - -a -- convert all whitespace, instead of just initial whitespace -t -- use comma separated list of tab positions 2349 tspencer@murzim.cs (~) > script done on Sat Jul 09 22:36:25 2005 Script started on Sat Jul 09 22:36:37 2005 2350 tspencer@murzim.cs (~) > unexpand --version unexpand (coreutils) 5.2.1 Written by David MacKenzie. Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 2351 tspencer@murzim.cs (~) > unexpand - --all -a -- convert all whitespace, instead of just initial whitespace --first-only -- convert only leading sequences of whitespace --help -- display help message and exit --tabs -t -- use comma separated list of tab positions --version -- output version information and exit 2351 tspencer@murzim.cs (~) > export PATH=/usr/bin:$PATH; rehash 2352 tspencer@murzim.cs (~) > unexpand --version unexpand: illegal option -- - usage: unexpand [-a ] [-t tablist] [file ...] 2353 tspencer@murzim.cs (~) > unexpand - --all -a -- convert all whitespace, instead of just initial whitespace --first-only -- convert only leading sequences of whitespace --help -- display help message and exit --tabs -t -- use comma separated list of tab positions --version -- output version information and exit 2354 tspencer@murzim.cs (~) > script done on Sat Jul 09 22:37:34 2005 See how _pick_variant continues to output the GNU options even after reexporting the PATH and rehashing? BTW, this was run with zsh 4.2.0, but _pick_variant doesn't seem to be any different in the latest CVS. At any rate, here is the updated patch. --- /dev/null Sat Jul 9 22:45:45 2005 +++ Completions/Unix/Command/_unexpand Sat Jul 9 22:46:12 2005 @@ -0,0 +1,43 @@ +#compdef unexpand +# +# $Id:$ +# +# Copyright (C) 2005 Travis L. Spencer +# ALL RIGHTS RESERVED +# +# See the file LICENCE in the root of the zsh distribution for +# licensing information. +# + +local all tabs ret=1 +local -a args + +all="convert all whitespace, instead of just initial whitespace" +tabs="use comma separated list of tab positions" +args=( + "(--all)-a[$all]" + "(--tabs)-t[$tabs]:tablist" + "*:file:_files" +) + +#if _pick_variant gnu="Free Soft" unix --version; then +if (unexpand --version 2>&1 | grep -i "Free Soft") > /dev/null ; then + args+=( + "(-a)--all[$all]" + "--first-only[convert only leading sequences of whitespace]" + "(-t)--tabs=[$tabs]:tablist" + "(* -)--help[display help message and exit]" + "(* -)--version[output version information and exit]" + ) +fi + +_arguments "$args[@]" && ret=0 + +return ret + +: <