Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: setopt globcomplete and () broken
- X-seq: zsh-workers 26710
- From: Mikael Magnusson <mikachu@xxxxxxxxx>
- To: zsh-workers <zsh-workers@xxxxxxxxxx>
- Subject: Re: setopt globcomplete and () broken
- Date: Tue, 10 Mar 2009 19:04:54 +0100
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=3o2Rp+/tGPg0wz1Ukz72dpvGYuUWNDsc+xCOS8+UQ4g=; b=UVy8VzDgsydh2YDZl00y5tsVyCwaT9sLtL8jf2FfJZbdDXOXyU98oSVyUHWRkRDQu+ JYk8oBGSYjeYtCQ+cGzrf2Yj2KnQFWXHgIhzAkAIiW8ZYgwcuLO27StXkqtFjOz1OJE/ anDiUsCjpQ5EGqZa6t+Bn+uwIPCOK/CFwroUE=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=pBoYfLiYi/VJvxqVWGJGBLfsQMBsifDN0Is/2NPgsVju3VyViAryMF3XlzK/HtkNl0 icn6wiw6yPkVmXSZa/2R3tij55iLwUSKEfyLpt5VwKAL+Lm1QJrLTvXxwuVKk3jUUIC5 M25OFYJTnOdR7gaA6tjrq6esVH/BEnTZChxhg=
- In-reply-to: <20090310173424.1af302c5@news01>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <237967ef0903100625s7e8e5908t7852ade0c1d6d8d3@xxxxxxxxxxxxxx> <20090310135146.30c0c794@news01> <20090310173424.1af302c5@news01>
2009/3/10 Peter Stephenson <pws@xxxxxxx>:
> On Tue, 10 Mar 2009 13:51:46 +0000
> Peter Stephenson <pws@xxxxxxx> wrote:
>> elif [[ "$tmp1" = (#b)(*[^\$])(\(\([^\|~]##\)\)) ]]; then
>> tmp2=( "$tmp2[@]" "${match[1]}((${tmp3}${match[2][3,-1]}" )
>
> I thought I was on the way to understanding what was going on here, but
> this attempt to match some form of glob qualifiers has stumped me. Why are
> we specially matching a pattern ending with glob qualifiers wrapped in
> double parentheses? What we're matching against, $tmp1, comes from patterns
> supplied to _files or _path_files as an argument; I can't see any sign the
> double parentheses are used, and the expansion manual says
>
> A glob subexpression that would normally be taken as glob qualifiers, for
> example (^x), can be forced to be treated as part of the glob pattern by
> doubling the parentheses, in this case producing ((^x)).
>
> Yet we are treating it as if it's a glob expression ($tmp3 is the
> new glob qualifier we are trying to insinuate into the list).
>
> Can I simply hold my breath until it goes away?
If I delete that whole paragraph of code, my completion works as I
want, but I break what it wanted to fix,
http://www.zsh.org/mla/workers/2000/msg02437.html
http://www.zsh.org/mla/workers/2000/msg02455.html
http://www.zsh.org/mla/workers/2000/msg02456.html
http://www.zsh.org/mla/workers/2000/msg02458.html
If I unsetopt globcomplete, I can ls *zshenv(D)<tab> with the
paragraph deleted though, so it all seems a bit crazy to me. I thought
globcomplete was about completing things with patterns that weren't
files in the first place, so why do glob qualifiers come into the
picture at all? ie what I want to do is *2png<tab> and find my ps2png
program, I don't see how (D) would ever fit in there. I guess some
crazy people might have binaries starting with a ., but apart from the
sorting flags, none of the other glob qualifiers make any sense here,
do they?
And when completing actual files, why would globcomplete mean
_path_files has to do extra work instead of just expanding the
pattern? Put differently, why does globcomplete affect _path_files at
all? Hm, if i touch cat cbt, then with globcomplete on, c*t<tab> lets
me cycle between them, while with it off, it just inserts both
matches. (this is with
zstyle ':completion:*' completer _oldlist _complete _correct
)
In summary, I guess I have no idea how any of this works :).
--
Mikael Magnusson
Messages sorted by:
Reverse Date,
Date,
Thread,
Author