zsh-users
 help / color / mirror / code / Atom feed
From: Danek Duvall <duvall@emufarm.org>
To: Oliver Kiddle <okiddle@yahoo.co.uk>
Cc: zsh-users@sunsite.dk
Subject: Re: Completion function for bitkeeper?
Date: Mon, 17 Nov 2003 09:51:51 -0800	[thread overview]
Message-ID: <20031117175151.GA24060@lorien.emufarm.org> (raw)
In-Reply-To: <15744.1069084060@gmcs3.local>

On Mon, Nov 17, 2003 at 04:47:40PM +0100, Oliver Kiddle wrote:

> You're not doing something wrong so much as different.

People have been telling me this all my life.  ;-)

> Firstly, the most common case is that there are no options other than
> compadd options to get mixed up with so having $expl added is what is
> wanted.

Fair enough; I certainly understand that.

> You wanted the compadd options after your own extra option because it
> made it easier to find your option--it would always be the first one.
> That made your helper function simpler but puts the onus on the
> calling functions to get the options in the right order.

Well, not just that it would be easier to find my option, but that my
option would be findable at all.

As it is, even with zparseopts (which I hadn't known about, so thank you
for that), there's no way at all to tell whether a -e that's passed to
my helper function is there because I passed it in explicitly through an
argument to _arguments, or whether it's part of the set of arguments
that's destined only for compadd.  There's simply no way for me to know.

So then the onus is on me to pick a flag that compadd doesn't already
use.  It uses seventeen uppercase letters, thirteen lowercase letters,
and two numbers, and that's a pretty severe depletion of the usable
namespace of flags.  But assuming I choose one (and it's even remotely
mnemonic), then there's no guarantee that a future release doesn't add a
new flag to compadd, and bites me in the ass!

So while I understand your explanation, my question of how to do this
right is still going unanswered.

One answer I can think of is to avoid the use of command-line flags
entirely, and just have two different functions.  Three probably -- one
is the function as it currently is, and two wrapper functions that call
the the first either with or without a flag.  Then they'd be
distinguished by different names.  A global shell variable is another
answer.  But these just seem kludgey to me.

> If you found a Unix program which had two independent and unrelated
> options -a and -b and the program couldn't cope with them being
> specified in the order -b followed by -a, you wouldn't think it was
> very good would you?

Of course not, but that's not the problem at hand.  It's not ordering
that's the problem, it's overlapping namespaces.  And by the time my
function sees the result, the overlap is no longer undoable.  It's like
merging image layers in GIMP or Photoshop -- you can't reconstruct the
layers from the merged result, so you don't know which pixels came from
which layer, so you've lost information.

Danek


  reply	other threads:[~2003-11-17 17:52 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-05-23 16:00 Steve Borho
2003-05-23 16:01 ` Danek Duvall
2003-11-06 15:32   ` Danek Duvall
2003-11-07 19:17     ` Oliver Kiddle
2003-11-10 18:20       ` Danek Duvall
2003-11-11  8:22         ` Oliver Kiddle
2003-11-11 10:42           ` Peter Stephenson
2003-11-11 15:21             ` Oliver Kiddle
2003-11-11 15:24               ` Peter Stephenson
2003-11-11 16:13                 ` Oliver Kiddle
2003-11-11 16:23                   ` Peter Stephenson
2003-11-11 16:44                     ` Oliver Kiddle
2003-11-11 16:23           ` Danek Duvall
2003-11-11 19:06             ` Oliver Kiddle
2003-11-11 21:28               ` Danek Duvall
2003-11-14  8:04                 ` Oliver Kiddle
2003-11-14 10:47                   ` Peter Stephenson
2003-11-14 13:09                     ` Oliver Kiddle
2003-11-14 16:12                       ` Bart Schaefer
2003-11-14 16:23                         ` Peter Stephenson
2003-11-14 17:14                           ` Bart Schaefer
2003-11-14 17:01                         ` Oliver Kiddle
2003-11-14 15:46                   ` Danek Duvall
2003-11-14 21:24                     ` Danek Duvall
2003-11-17 15:47                     ` Oliver Kiddle
2003-11-17 17:51                       ` Danek Duvall [this message]
2003-11-19 10:23                         ` Oliver Kiddle

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=20031117175151.GA24060@lorien.emufarm.org \
    --to=duvall@emufarm.org \
    --cc=okiddle@yahoo.co.uk \
    --cc=zsh-users@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).