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

Re: _files vs _path_files discussion (old thread)



Bart Schaefer (schaefer@xxxxxxxxxxxxxxxxxxxxxxx) wrote:
> On Mar 12,  1:02pm, Adam Spiers wrote:
> } Subject: Re: _files vs _path_files discussion (old thread)
> }
> }    # Include non-hidden directories in globbed file completions
> }    compstyle '::complete:*' \
> }      tag-order 'globbed-files directories' all-files 
> }    compstyle '::complete:*:*:directories' file-patterns '*~.*(-/)'
> } 
> } It's almost perfect ...
> 
> Have you tried that with, say, `ls' ?  I'll bet it ends up completing
> _only_ directories, because there's no -g option passed to _files for
> `ls' like there is for `tar'.

Of course you're right, and I had to change it back as soon as I
realised :-(

> If you have global directories file-patterns you're going to need them
> for globbed-files, too ...

Why's that?  I'm still not fully understanding this, it seems.

> Do you have the GLOB_DOTS option set, by chance?

I did, until you pointed it out ;-)

> Effectively, what you want is to subdivide the 'directories' tag and
> have it treated like it has it's own internal tag-order.

That's right.  Now why couldn't I have thought clearly enough to
realise that?

> One possibility would be to make file-patterns itself into a hierarchy;
> that is
> 
> zstyle :completion::complete:tar::directories \
> 	file-patterns '*(-/)' '.*(-/)'
> 
> would mean to use '.*(-/)' only if '*(-/)' returned nothing.  The current
> meaning of the above is also expressible by
> 
> zstyle :completion::complete:tar::directories \
>         file-patterns '*(-/) .*(-/)'
> 
> (that is, file-patterns is presently a string, not an array) so we would
> not be losing any functionality.
> 
> Then all we need is a magic token in file-patterns to mean "use anything
> passed to _files with the -g option here" and global file-patterns would
> become really useful.

That sounds really nice.



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