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

Re: Manual entry for compctl -M



Peter Stephenson wrote:

> I'm just trying to tidy up the zshcomptl manual page a bit, since it's
> changed quite a lot (now I'll have to try and work the latest patch
> in).

Oops, sorry.

> The difficult bit is -M.  In particular I don't understand what
> is going on the partial completion example at all, nor can I get it to
> work.  The incantation given is:
> 
> compctl -M 'r:|[.,_-]=* r:|=*'
> 
> First, according to the description above this, it means that the
> `line pattern' is blank and the anchor is one of the set in [...].  Is
> that right?  Wouldn't I need to ignore what's on the left?

That's exactly what happens. The (first) pattern means: an empty
string to the left of (the anchor) `[.,_-]' matches any number of
characters. I.e.: any character on the left of the anchor `will be
ignored'.

> How does
> that help me complete, say comp.sources.u<TAB> as a partial word?  I
> tried something like
> 
> % compctl -M 'r:[.,_-]|=* r:|=*' -k '(comp sources unix)' foo
> % foo c.s.u<TAB>
> 
> but nothing happened.  I can get the c on its own to work, as usual,
> but nothing else.

The words have to contain the anchors:

  compctl -M 'r:|[.,_-]=* r:|=*' \
          -k '(comp.sources.unix comp.sources.misc)' foo

or just

  compctl -M 'r:|[.,_-]=* r:|=*'

as a global matcher and you can get `Zle/z_tr.c<TAB>' to complete to
`Zle/zle_tricky.c'.

(Note also that I put the anchor in its place again, after the `|'.)

Bye
 Sven


--
Sven Wischnowsky                         wischnow@xxxxxxxxxxxxxxxxxxxxxxx



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