From: Daniel Shahaf <d.s@daniel.shahaf.name>
To: Zsh workers <zsh-workers@zsh.org>
Subject: Re: completion match ordering
Date: Mon, 26 Nov 2018 03:09:39 +0000 [thread overview]
Message-ID: <1543201779.3048772.1588561784.55C4BFED@webmail.messagingengine.com> (raw)
In-Reply-To: <76839-1543195550.251964@c6AU.RX4q.p78d>
Oliver Kiddle wrote on Mon, 26 Nov 2018 02:25 +0100:
> On 7 Nov, I wrote:
> > You can do:
> > _arguments '-b-:level: compadd "${(@)expl/#-J/-2V}" ${(on)levels}'
> > But what you have is perhaps better, especially as it's duplicated for
> > -b and -e.
>
> The patch below is an initial experiment for what I was suggesting.
> It allows, e.g:
> _arguments '-b-:level:compadd -o numeric -a levels'
>
> Any thoughts on the interface? Is something more terse like -on
> preferable? The -V option becomes superfluous (but remains for
> compatibility). Instead of -V grp you can use -J grp -o nosort.
> Do we need to worry about this breaking uses of the old -o?
In general, I would default to assuming we should worry about
compatibility, unless there's a specific reason not to. (As a user,
I assume that my zsh code is forward compatible with new zsh releases
unless something is specifically documented to be an exception.)
Is there a reason for this case to be an exception? If people use
«compadd -od foo -a bar» in 5.6.2, what would the failure mode be?
> With this the existing, -o would become -o match and becomes a property
> of the group rather than the match. Being associated with the group is
> more consistent with related options like -1, -2 and -V. It might be
> confusing that it doesn't work if no group is specified, however.
Sounds like bin_compadd() could detect this situation and warn.
> Currently, given two -o options, only the first applies, This is
> consistent with -X, -J etc even though I think it would have been better
> if the last of these were used. In many cases where functions use
> zparseopts to extract compadd options, they should be using J+: rather
> than J: as zparseopts is taking the last one only with J:
No, what they *should* be doing is passing arguments transparently,
without parsing and reserializing them, so when we add "-$letter"
options to compadd we can do so by changing just one place (namely, the
C struct declaring the builtin). Probably by putting the compadd
options in an array and passing its name, or by putting them in ${argv}
after ${argv[(i)--]}, etc..
Cheers,
Daniel
next prev parent reply other threads:[~2018-11-26 3:10 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-04 0:13 [PATCH] Completion: Sort lz4 compression levels properly (+ a question) dana
2018-11-07 10:35 ` Oliver Kiddle
2018-11-07 17:52 ` dana
2018-11-26 1:25 ` completion match ordering Oliver Kiddle
2018-11-26 3:09 ` Daniel Shahaf [this message]
2018-11-26 5:18 ` dana
2018-11-26 9:37 ` Peter Stephenson
2018-11-26 23:07 ` dana
2019-05-06 21:16 ` PATCH: " Oliver Kiddle
2019-05-07 0:10 ` dana
2019-05-07 12:39 ` Oliver Kiddle
2019-08-22 8:39 ` Daniel Hahler
2019-08-23 19:05 ` Oliver Kiddle
2019-08-25 14:25 ` Daniel Hahler
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=1543201779.3048772.1588561784.55C4BFED@webmail.messagingengine.com \
--to=d.s@daniel.shahaf.name \
--cc=zsh-workers@zsh.org \
/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).