From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11765 invoked from network); 15 Dec 2003 18:52:03 -0000 Received: from sunsite.dk (130.225.247.90) by ns1.primenet.com.au with SMTP; 15 Dec 2003 18:52:03 -0000 Received: (qmail 21300 invoked by alias); 15 Dec 2003 18:51:57 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 19289 Received: (qmail 21265 invoked from network); 15 Dec 2003 18:51:57 -0000 Received: from localhost (HELO sunsite.dk) (127.0.0.1) by localhost with SMTP; 15 Dec 2003 18:51:57 -0000 X-MessageWall-Score: 0 (sunsite.dk) Received: from [193.109.254.211] by sunsite.dk (MessageWall 1.0.8) with SMTP; 15 Dec 2003 18:51:56 -0000 X-VirusChecked: Checked X-Env-Sender: okiddle@yahoo.co.uk X-Msg-Ref: server-22.tower-36.messagelabs.com!1071514313!2476786 X-StarScan-Version: 5.1.13; banners=-,-,- Received: (qmail 10327 invoked from network); 15 Dec 2003 18:51:53 -0000 Received: from iris.logica.co.uk (158.234.9.163) by server-22.tower-36.messagelabs.com with SMTP; 15 Dec 2003 18:51:53 -0000 Received: from gmcs3.local ([158.234.142.61]) by iris.logica.co.uk (8.12.3/8.12.3/Debian -4) with ESMTP id hBFIpruB016306 for ; Mon, 15 Dec 2003 18:51:53 GMT Received: from gmcs3.local (localhost [127.0.0.1]) by gmcs3.local (8.11.6/8.11.6/SuSE Linux 0.5) with ESMTP id hBFIu4r05721 for ; Mon, 15 Dec 2003 19:56:04 +0100 X-VirusChecked: Checked X-StarScan-Version: 5.0.7; banners=.,-,- In-reply-to: <1031215170258.ZM12804@candle.brasslantern.com> From: Oliver Kiddle References: <20031213154651.GR18859@strindberg.dsv.su.se> <1031213191918.ZM5325@candle.brasslantern.com> <20031213233905.GW18859@strindberg.dsv.su.se> <3213.1071488991@gmcs3.local> <1031215170258.ZM12804@candle.brasslantern.com> To: Zsh workers Subject: Re: Completion in pwd before subdirecories Date: Mon, 15 Dec 2003 19:56:04 +0100 Message-ID: <5719.1071514564@gmcs3.local> Bart wrote: > On Dec 15, 12:49pm, Oliver Kiddle wrote: > } > } zstyle ':completion:*' file-patterns \ > } '*(-/):directories %p(^-/):globbed-files' '*:all-files' > } > } Unfortunately, that will now break for any completion which specifies a > } glob qualifier such as _chown. > > Are you sure about that? No. Sorry, didn't test it so based on what you say below, I'm probably wrong. > There's code in _files to attempt to merge together any trailing stuff > that looks like glob qualifiers, because _files predates the #q flag. > In fact, I'm suspicious that adding #q might actually break things. I'll have to test. I seem to remember it not working once in the past. > } I'm not quite sure whether the default file-patterns style shouldn't > } use %p(^-/) for globbed-files anyway. > > I don't think I understand the question. For that you need to look back at the original question on -users and look at why the file-patterns style above was needed. Patterns like * match directories so the directories were completed twice. This meant the directory got completed in the globbed-files group before the directories group was reached. Working out that the file-patterns style is needed and why is not obvious. So I wondered whether the default file-patterns style shouldn't be this. > Are you suggesting that we should split the existing globbed-files default > into globbed-files and globbed-directories? I.e., so that instead of the I wasn't suggesting that but it is an idea that may be worth thinking about. > } What if we want to glob directory names from a completion function? > > I'm not making the connection between that question and the previous one. > > However, nothing stops any completion function from doing something like > > zstyle -m ":completion:${curcontext}:" file-patterns '*' || > zstyle ":completion:${curcontext}:" file-patterns \ > '%p(-/):directories %p(^-/):globbed-files' '*:all-files' > Doing that from every completion function which just wants to glob for a certain file extension is not pleasant. It has never seemed ideal to me that, for example, gunzip completion will complete a directory called dir.gz even if the user has directories after files in their file-patterns style. Ideally we should tidy things up from the completion functions and not expect user's to set the file-patterns style for every command. For the majority of commands we use something like _files -g '*.gz' to specify a filename extension. These should ideally not match directories. For some commands like chown, we use a more complex glob where it is valid to match directories (though some user's may still want directory completion deferred). One option might be for _files to add the (^-/) when substituting %p and to add a -/g option to suppress this when the glob should also match directories. We could even have other escapes in addition to %p which give the user more control. A user who relies on _next_tags to get at directories may want explicitly globbed directories first for commands like chown. Oliver