From: Sven Wischnowsky <wischnow@informatik.hu-berlin.de>
To: zsh-workers@sunsite.auc.dk
Subject: PATCH: Re: _arguments parsing of --help output
Date: Wed, 26 Jul 2000 10:38:07 +0200 (MET DST) [thread overview]
Message-ID: <200007260838.KAA13160@beta.informatik.hu-berlin.de> (raw)
In-Reply-To: "Bart Schaefer"'s message of Tue, 25 Jul 2000 15:05:26 +0000
Bart Schaefer wrote:
> On Jul 24, 10:52am, Sven Wischnowsky wrote:
> } Subject: Re: _arguments parsing of --help output
> }
> } Bart Schaefer wrote:
> }
> } > Many GNU commands include short options in the --help output as well
> } > [...]
> } > Is there a reason that we don't attempt to complete the short forms?
> }
> } _arguments '-e:ea:(1 2)' -e -b -p
> }
> } This will make `foo -e <TAB>' complete `1' and `2' but `foo -' lists
> } both (with auto-descriptions).
>
> I don't understand here what you mean by "`foo -' lists both".
With:
zstyle ':completion:*:option(-*|s)' auto-description 'specify %d'
and Case 1 below `tst <TAB>' gives:
% tst --
--e -- specify ea
--b --e --p
I.e. --e is listed twice, the first one is the `--e:ea:(1 2)' and the
second one is the auto-detected one.
Should we make _arguments use only the first, last or most `specifc'
one (`most specific' could mean that it describes more arguments than
the other specs for that same option)?
> ...
>
> _tst() { _arguments -- '*--e:ea:(1 2)' } # Case 3
>
> In combination with:
>
> tst() { print -l - --e --b --p }
> compdef _tst tst
>
> ...
>
> Case 2: Completion after `tst' lists --e --b --p and completion after
> `tst --e' completes `--' and then lists --b and --p; 1 or 2 are never
> completed.
>
> Case 3: Exactly like Case 2.
>
> So case 1 behaves as I expected, and case 3 appears to be broken. (I
> also tried '*e:ea:(1 2)' and a few other patterns.) I'm not sure what
> I should be expecting from case 2.
The same as from the second case.
The problem was that _arguments only used those specs after the `--'
for options described (in the --help output) by something containing
an equal sign (`--out=FILE' or some such).
The patch below changes that. The descriptions are used as they are,
i.e. in the example above `tst --e <TAB>' works, but `tst --e=<TAB>'
does not. I think this is right. I think I could be convinced
otherwise.
Bye
Sven
Index: Completion/Base/_arguments
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Base/_arguments,v
retrieving revision 1.27
diff -u -r1.27 _arguments
--- Completion/Base/_arguments 2000/05/31 06:11:08 1.27
+++ Completion/Base/_arguments 2000/07/26 08:36:35
@@ -142,11 +142,16 @@
cache=( "$cache[@]" "${(@)^tmpo}=${dir}${descr}" )
fi
- # Everything else is just added as an option without arguments.
+ # Everything else is just added as an option without arguments or
+ # as described by $descr.
if (( $#tmp )); then
tmp=("${(@)tmp//[^a-zA-Z0-9-]}")
- cache=( "$cache[@]" "$tmp[@]" )
+ if [[ -n "$descr" ]]; then
+ cache=( "$cache[@]" "${(@)^tmp}${descr}" )
+ else
+ cache=( "$cache[@]" "$tmp[@]" )
+ fi
fi
done
set -A "$name" "${(@)cache:# #}"
--
Sven Wischnowsky wischnow@informatik.hu-berlin.de
next reply other threads:[~2000-07-26 8:38 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2000-07-26 8:38 Sven Wischnowsky [this message]
2000-07-26 9:58 ` 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=200007260838.KAA13160@beta.informatik.hu-berlin.de \
--to=wischnow@informatik.hu-berlin.de \
--cc=zsh-workers@sunsite.auc.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).