zsh-workers
 help / color / mirror / code / Atom feed
From: Travis Spencer <tspencer@cs.pdx.edu>
To: zsh-workers@sunsite.dk
Subject: Re: PATCH: _unexpand
Date: Sat, 9 Jul 2005 23:14:44 -0700	[thread overview]
Message-ID: <20050710061443.GA12208@ruby.cat.pdx.edu> (raw)
In-Reply-To: <1050710033857.ZM18234@candle.brasslantern.com>

On 7/9/05, Bart Schaefer <schaefer@brasslantern.com> 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
+
+: <<EMACS_LOCAL_VARIABLES
+Local Variables:
+mode: shell-script
+mode: flyspell-prog
+End:
+EMACS_LOCAL_VARIABLES


  reply	other threads:[~2005-07-10  6:15 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-07-10  1:18 Travis Spencer
2005-07-10  3:38 ` Bart Schaefer
2005-07-10  6:14   ` Travis Spencer [this message]
2005-07-10 16:20     ` Bart Schaefer
2005-07-11  0:52       ` Travis Spencer
2005-07-11  3:26         ` Bart Schaefer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050710061443.GA12208@ruby.cat.pdx.edu \
    --to=tspencer@cs.pdx.edu \
    --cc=zsh-workers@sunsite.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).