From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19173 invoked from network); 24 Feb 2000 09:04:26 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 24 Feb 2000 09:04:26 -0000 Received: (qmail 2225 invoked by alias); 24 Feb 2000 09:04:21 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 9858 Received: (qmail 2217 invoked from network); 24 Feb 2000 09:04:20 -0000 Date: Thu, 24 Feb 2000 10:04:19 +0100 (MET) Message-Id: <200002240904.KAA15316@beta.informatik.hu-berlin.de> From: Sven Wischnowsky To: zsh-workers@sunsite.auc.dk In-reply-to: Peter Stephenson's message of Wed, 23 Feb 2000 18:57:16 +0000 Subject: 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@informatik.hu-berlin.de