Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Having a tough time setting up completion.

I've spent a lot to time studying the zshcompsys man page (the docs for _arguments specifically), but I"m still having a tough time specifying the syntax to do the following completion.

I have a command called foo. This command takes exactly one of three forms:

foo  -x  <exactly-one-of-fifty-strings>
foo --longword <exactly-one-of-fifty-strings>
foo <exactly-one-of-fifty-strings>

-x is a single-letter option, --longword is a double-dashed GNU-style long option. (These two options are synonymous.) Of these two options, either zero or exactly one of them should appear. IF one of them appears, it must appear immediately after foo (separated from foo, of course, by whitespace).

In all cases, <exactly-one-of-fifty-strings> is a single (non-leading-dash) word. As soon as this word is entered or completed, no other word from the (really large) set should appear on the command line.

If anyone can offer a general outline as to how I can use _arguments to implement this, that would be great. I need to manually enter in all fifty words at some point, and make them mutually exclusive. Will be interesting to see how to do that. Thanks!

Messages sorted by: Reverse Date, Date, Thread, Author