From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7604 invoked from network); 3 Aug 2000 10:52:27 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 3 Aug 2000 10:52:27 -0000 Received: (qmail 19925 invoked by alias); 3 Aug 2000 10:51:59 -0000 Mailing-List: contact zsh-users-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 3355 Received: (qmail 19917 invoked from network); 3 Aug 2000 10:51:58 -0000 Date: Thu, 3 Aug 2000 12:51:52 +0200 (MET DST) Message-Id: <200008031051.MAA12037@beta.informatik.hu-berlin.de> From: Sven Wischnowsky To: zsh-users@sunsite.auc.dk In-reply-to: Peter Stephenson's message of Thu, 03 Aug 2000 10:19:05 +0100 Subject: Re: How to avoid expansion when completing? Peter Stephenson wrote: > > Suppose I have a load of subdirectories, each of which contains a file > > called foobar.dat. I enter > > > > % wc **/foob > > > > hoping to expand this to **/foobar.dat (assuming there's nothing else > > starting with 'foob' in any of the subdirectories). However, I get the > > '**' expanded to the first subdirectory name which has a file starting > > with 'foob' in it. (If I keep pressing then I cycle round). > > > > I've got the following options set, and I'm running version 3.1.5. > > If you don't mind upgrading, you can do such things with the new bindable > completion widgets in 3.1.9 (maybe 3.1.6, but that's irrelevant if you're > still on 3.1.5). Assuming the file is unique, you can use > e.g. _most_recent_file (usually bound to ^xm), which would normally put a > `*' on the end and find the most recently modified matching file --- that > ought to be enough for this purpose. > > The following function is a trivial modification of that to add all > matching files as possible completions (_glob_expand_and_complete). > Sven probably has a better way of doing it. Actually, no. I seem to remember Andrej the same question. And I seem to remember me replying that this could get pretty expensive... One could write a function that globs and lets one complete the last pathname component. But it would then probably be easy to find cases where it should complete the `intersting' part instead, which can be hard (or even impossible) to identify with complex patterns. Especially if the possible completions can have different numbers of components. After thinking about this I gave up thinking about it at all. It might be possible to add this to _match (together with _path_files; for those not familiar with the new completion system: these are two of its functions, _path_files completes filenames and _match offers something like globcomplete, opnly more powerful). In fact, they already handle completion of patterns a bit, but they don't try to restore parts of the completion back to the original pattern, which would be needed here. Bye Sven -- Sven Wischnowsky wischnow@informatik.hu-berlin.de