Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Test for features?
- X-seq: zsh-users 14747
- From: "Benjamin R. Haskell" <zsh@xxxxxxxxxx>
- To: Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx>
- Subject: Re: Test for features?
- Date: Mon, 25 Jan 2010 12:09:59 -0500 (EST)
- Cc: Zsh Users <zsh-users@xxxxxxx>
- In-reply-to: <100125084726.ZM24208@xxxxxxxxxxxxxxxxxxxxxx>
- List-help: <mailto:zsh-users-help@zsh.org>
- List-id: Zsh Users List <zsh-users.zsh.org>
- List-post: <mailto:zsh-users@zsh.org>
- Mailing-list: contact zsh-users-help@xxxxxxx; run by ezmlm
- References: <alpine.LNX.2.01.1001250001570.20648@xxxxxxxxxxx> <alpine.LNX.2.01.1001250113300.20648@xxxxxxxxxxx> <100125084726.ZM24208@xxxxxxxxxxxxxxxxxxxxxx>
On Mon, 25 Jan 2010, Bart Schaefer wrote:
> On Jan 25, 1:16am, Benjamin R. Haskell wrote:
> } Subject: Re: Test for features?
> }
> } On Mon, 25 Jan 2010, Benjamin R. Haskell wrote:
> }
> } > Is there a good way to test for features in Zsh?
>
> The best way, as you discovered, is simply to try using the feature --
> in a subshell if its absence causes a shell exit -- and check for
> success or failure of that attempt. E.g., I have in my startup files
> things like:
>
> # Subshell because some versions of zsh stop sourcing on "bad option";
> # braces because some versions do "if ( )" like csh and don't subshell.
> if { (autoload -U >& /dev/null) }
> then
> ...
> fi
>
> where the "..." does things like set up the fpath.
Just to be sure I'm following, you're saying: the '...' does things that
depend on 'autoload -U' being functional?
> Rearranging things a bit ...
>
> } [*] I still always mix up my terminology for:
> }
> } {glob,history,expansion,file\ generation}\ {modifiers,flags,parameters}
>
> There's no such thing as a "glob parameter" -- "parameters" belong in
> the left braces, not the right. Maybe you're thinking of
> "qualifiers"?
Yes, I meant "qualifiers", but thinko'ed it to "parameters".
> Also "globbing" and "file[name] generation" are the same thing.
Yeah, but it's hard to search 'zshall' sometimes thanks to that fact.
>
> } Are the correct terms: (1) file expansion modifier and (2) history modifier?
>
> The correct term is just "modifier" -- there's only one set of them.
> The distinction is that all the modifiers apply to history, but only a
> subset of them apply to each of globbing or parameter expansion.
Okay, so syntactically, 'globbing modifiers' would refer to the subclass
of 'history modifiers' (== 'modifiers') that work for globbing. But
they aren't really a special class of thing, and in my examples, :A is
just a modifier. Guess I'm just confusing myself.
> Generally, "flags" appear in parens as a prefix of the context to which
> they're applied, and "modifiers" appear as a suffix with a colon. There
> wasn't any conscious effort to make this distinction that I know of, it
> just sort of worked out that way. "Qualifiers" apply only to globbing,
> and in that context modifiers are a subset of qualifiers.
Good summation, thanks.
> } Hmm... interesting side note: only one kind of ':A' modifier* doesn't
> } work.
> }
> } This works (1): p=( ~(:A) )
>
> Well, no, it doesn't. It doesn't cause an error, but it doesn't do
> anything either.
Yeah, realized after I sent.
> Unrecognized modifiers used as glob qualifiers are silently discarded.
> I'm not sure why.
Just to keep things fun. :-)
>
> You can see this better if you try *(:A) instead.
>
Messages sorted by:
Reverse Date,
Date,
Thread,
Author