Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: problem with context specification
- X-seq: zsh-users 24655
- From: Daniel Shahaf <d.s@xxxxxxxxxxxxxxxxxx>
- To: Pier Paolo Grassi <pierpaolog@xxxxxxxxx>
- Subject: Re: problem with context specification
- Date: Mon, 13 Jan 2020 17:06:30 +0000
- Cc: Zsh-Users List <zsh-users@xxxxxxx>
- In-reply-to: <CAP+y1xCU8W9uhsx3Xz+3J-8MVMT8Ve69M2EFByd5ZQONKaDY=g@mail.gmail.com>
- List-help: <mailto:zsh-users-help@zsh.org>
- List-id: Zsh Users List <zsh-users.zsh.org>
- List-post: <mailto:zsh-users@zsh.org>
- List-unsubscribe: <mailto:zsh-users-unsubscribe@zsh.org>
- Mailing-list: contact zsh-users-help@xxxxxxx; run by ezmlm
- References: <CAP+y1xCU8W9uhsx3Xz+3J-8MVMT8Ve69M2EFByd5ZQONKaDY=g@mail.gmail.com>
Pier Paolo Grassi wrote on Mon, Jan 13, 2020 at 17:46:09 +0100:
> if I substitute this as the general case, eg:
>
> zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z} l:|=* r:|=*'
>
> then everything get this style, so the syntax is correct. it seem that what
> is wrong is the pattern.
> I tried some variations of it, with no success:
>
> zstyle ':completion:*:*:episodes:*' ...
> zstyle ':completion:*:episodes:*' ...
>
> my main problem is that I don't really understand the pattern syntax, and
> haven't been able to find a man page detailing it (the documentation on the
> zstyle builtin doesn't explain it), so I basically try random variations.
The documentation does explain it; quote:
For ordering of comparisons, patterns are searched from most
specific to least specific, and patterns that are equally
specific keep the order in which they were defined. A pattern
is considered to be more specific than another if it contains
more components (substrings separated by colons) or if the
patterns for the components are more specific, where simple
strings are considered to be more specific than patterns and
complex patterns are considered to be more specific than the
pattern `*'.
The upshot of this is that each of the patterns ':completion:*:*:episodes:*'
and ':completion:*:episodes:*' is considered to be more specific than
':completion:*'. A style set under either of the former would have precedence
over a style set under the latter, _as far as zstyle is concerned_. (See
pws's answer for the caveat.)
> Using ctrl-x h after episodes on the command line it gives:
>
> tags in context :completion::complete:episodes::
> argument-rest (_arguments _episodes)
>
> so I've tried:
> zstyle ' :completion::complete:episodes::'
>
> but still to no effect, and also the lack of * seems a little suspicious
No, the lack of stars is expected. What you put in zshrc is patterns; the
completion system then looks up specific strings that the patterns are matched
against. The settings attached to the most specific pattern that matches are
used.
Minimal example:
zshrc contains:
% zstyle ':foo:bar' lorem yes
% zstyle ':foo:*' lorem no
Then the foo subsystem might run, for example:
% zstyle -t :foo:bar lorem && pwd
/home/daniel
% zstyle -t :foo:baz lorem && pwd
%
I take it the documentation of zstyle didn't make this clear, so could you
suggest how to improve it?
Cheers,
Daniel
Messages sorted by:
Reverse Date,
Date,
Thread,
Author