Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: PATCH: _unexpand
- X-seq: zsh-workers 21415
- From: Travis Spencer <tspencer@xxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxx
- Subject: Re: PATCH: _unexpand
- Date: Sat, 9 Jul 2005 23:14:44 -0700
- In-reply-to: <1050710033857.ZM18234@xxxxxxxxxxxxxxxxxxxxxxx>
- Mail-followup-to: zsh-workers@xxxxxxxxxx
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- Reply-to: zsh-workers@xxxxxxxxxx
On 7/9/05, Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx> 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@xxxxxxxxx (~) > 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@xxxxxxxxx (~) > 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@xxxxxxxxx (~) > export PATH=/usr/bin:$PATH ; rehash
2347 tspencer@xxxxxxxxx (~) > unexpand --version
unexpand: illegal option -- -
usage: unexpand [-a ] [-t tablist] [file ...]
2348 tspencer@xxxxxxxxx (~) > unexpand -
-a -- convert all whitespace, instead of just initial whitespace
-t -- use comma separated list of tab positions
2349 tspencer@xxxxxxxxx (~) >
script done on Sat Jul 09 22:36:25 2005
Script started on Sat Jul 09 22:36:37 2005
2350 tspencer@xxxxxxxxx (~) > 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@xxxxxxxxx (~) > 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@xxxxxxxxx (~) > export PATH=/usr/bin:$PATH; rehash
2352 tspencer@xxxxxxxxx (~) > unexpand --version
unexpand: illegal option -- -
usage: unexpand [-a ] [-t tablist] [file ...]
2353 tspencer@xxxxxxxxx (~) > 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@xxxxxxxxx (~) >
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
Messages sorted by:
Reverse Date,
Date,
Thread,
Author