From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2973 invoked from network); 16 Feb 2000 10:39:02 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 16 Feb 2000 10:39:02 -0000 Received: (qmail 26807 invoked by alias); 16 Feb 2000 10:38:52 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 9758 Received: (qmail 26799 invoked from network); 16 Feb 2000 10:38:51 -0000 Message-ID: <38AA7E36.135EBD1E@u.genie.co.uk> Date: Wed, 16 Feb 2000 10:38:46 +0000 From: Oliver Kiddle X-Mailer: Mozilla 4.7 [en] (Win95; I) X-Accept-Language: en MIME-Version: 1.0 To: Zsh workers Subject: Re: help with _match, globcomplete etc. (with a PATCH) References: <200002151608.RAA14415@beta.informatik.hu-berlin.de> <38A9AECE.5B213E7@u.genie.co.uk> <1000216064743.ZM18361@candle.brasslantern.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Bart Schaefer wrote: > > On Feb 15, 7:53pm, Oliver Kiddle wrote: > } Subject: Re: help with _match, globcomplete etc. (with a PATCH) > } echo $code[ai]/{a, > > All I get from that is a beep, before Sven's 9749, and > > zagzig% echo foo/\{a, > ^note trailing space added > with 9749 applied. > Of course that seems wrong, too. I didn't want the brace to be quoted. > What output do you see? Firstly, I meant not above, as I said in the original post but I think you probably used that. I see: risc8% echo foo\[/\{a, also with a trailing space added. > Hmm. This would almost have to be done in C code; if you have more > than one of the three forms in the same "word", it'd get pretty messy > to dismantle it to expand only the appropriate substring(s). Thats roughly what I imagined was the case after messing with _expand more. It would probably never work too well with the various things I had in mind for the scripts anyway. > } Also, I can't see a way of doing globbing, while preserving variable > } references. > > This strikes me as nigh impossible in the general case. What would you > expect to see if you invoked the "glob but preserve variables" expansion > in a case like: > > zsh% arr=('[sS]' Src/M ../) > zsh% print -l ${~^arr}* > > ?? Or do I completely misunderstand what you're asking? You're probably right, I was thinking of simple cases where the variables used were single values not arrays. What I meant was that the variable reference would remain in place of its expansion in the full glob expansion. Anyway I take your point about why it isn't all that simple. The reason I wanted this is basically that I use a number of associative arrays to point to different areas of the system I work on. The path to most of these areas are stupidly long so I don't generally want my variable references expanded on the command-line because I end up with a mess spanning several lines with the things I want to look back at buried deep amoung the long path names. Normally for referencing directories, I'd be able to use the named directory hash table - expand-or-complete never expanded tildes. In fact the general handling of ~something in completion is exactly what I wanted for my assocaitive array variables. This leads me to make a suggestion which may or may not be easy but would solve my problems: in the same way as a variable whose value is a directory can be refered to with ~, could the same be made to work for associative arrays (and arrays in general I suppose), allowing me to use stuff like ~code[ai] and ~test[$area]? Oliver Kiddle