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

Re: file-patterns problem



Peter Stephenson wrote:

> I'm sure there are going to be more ramifications of the user guide chapter
> on completion (indeed, I've got a file of remarks which I'll need to
> reprocess), but here's something that arose because Bart didn't like the
> way I'd described file-patterns (thanks to Bart and Sven for some
> corrections etc.).  The description now looks like this:
> 
>   It was explained above for the tag-order style that when a function
>   uses pattern matching to generate file completions, such as all *.ps
>   files or all *.gz files, the three tags globbed-files,
>   all-files and directories are tried.  When you set something with
>   file-patterns, all three tags are automatically activated.  So, for
>   example, after
> 
>     zstyle ':completion:*:*:foo:*:*' file-patterns '*.yo'
> 
>   the command named `foo' will complete files ending in `.yo', as
>   well as directories.   For once, you don't have to change the completer to
>   do this:  `foo' isn't specially handled, so does default completion,
>   and that means completing files, so that file-patterns is active
>   anyway.
> 
>   You can now set up your tag-order style to include
>   globbed-patterns, which represents the `.yo' files, and
>   directories and all-files; suppose you want to make the `.yo'
>   files and the directories appear at the same time:
> 
>     zstyle ':completion:*:*:foo:*:*' tag-order 'directories globbed-files'
> 
> Unfortunately this doesn't seem to work --- I don't get the directories,
> even if there aren't any .yo files.  I can't see what's going wrong.  I can
> add `*(-/)' to the globbed files list, of course, but then they're
> naturally regarded as attached to the globbed-files tag.  Maybe I've got
> the wrong end of the stick somewhere.

First of all: if one wants to set a file-pattern explicitly one should 
use the tag one wants to set it for. Otherwise it will always be used, 
for all possible tags.

Second: one only gets the extra (i.e. normally not tried) tags one
explicitly selects. So:

  zstyle ':completion:*:*:foo:*:globbed-files' file-patterns '*.yo'

Makes only the globbed-files and the all-files tags be used. If one
wants directories, one has to say that:

  zstyle ':completion:*:*:foo:*:directories' file-patterns '*(-/)'

This is a bit ugly. I /think/ I asked if we should make this different 
when I added the file-patterns style, but it may well be that I
forgot. So: should we make the directories tag with its usual pattern
be tried automatically if the user explicitly sets the file-patterns
tag for globbed-files? Or should we do that only if the directories tag,
file-patterns style is given, but allow an empty value to stand for
`the normal pattern'?

Bye
 Sven


--
Sven Wischnowsky                         wischnow@xxxxxxxxxxxxxxxxxxxxxxx



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