From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23244 invoked from network); 6 Jul 2001 09:26:27 -0000 Received: from sunsite.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 6 Jul 2001 09:26:27 -0000 Received: (qmail 7316 invoked by alias); 6 Jul 2001 09:25:23 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 15278 Received: (qmail 7281 invoked from network); 6 Jul 2001 09:25:21 -0000 From: Sven Wischnowsky Date: Fri, 6 Jul 2001 11:24:04 +0200 (MET DST) Message-Id: <200107060924.LAA12231@beta.informatik.hu-berlin.de> To: zsh-workers@sunsite.dk Subject: Re: Preserve initial // in path name completion In-Reply-To: <003d01c105da$9a608230$21c9ca95@mow.siemens.ru> Andrej Borsenkow wrote: > Is it (easily) possible to preserve initial // irrespectively of > squeez-slashes? (Or depending on other style)? Looks like zsh is gaining > popularity on Cygwin and probably will be included in standard net release; > having the above allows you finally complete inside network shares > (fake-files //:'server1 server2' ...). > > Sven? Currently not. Seems like we never came aroud to implementing it, but it can be made quite simply, see the patch below. It adds a style `preserve-prefix' which can be given a pattern and _path_files will then blindly keep any prefix matched by that pattern unchanged. Would that be enough? (Please try it by hand, I won't commit it until I get positive replies -- but then I probably will because if I remember correctly there were even Unices which attach a special meaning to a leading `//' which in turn makes me wonder why we didn't add it earlier, but maybe I just haven't been asked often enough or was too fed up at those times...). Maybe we should then rename it to `keep-prefix', but maybe not, because it has a slightly differnet meaning in _expand (and different values). Bye Sven Index: Completion/Unix/Type/_path_files =================================================================== RCS file: /cvsroot/zsh/zsh/Completion/Unix/Type/_path_files,v retrieving revision 1.6 diff -u -r1.6 _path_files --- Completion/Unix/Type/_path_files 2001/06/18 09:53:17 1.6 +++ Completion/Unix/Type/_path_files 2001/07/06 09:21:25 @@ -264,7 +264,15 @@ linepath= realpath= - if [[ "$pre[1]" = / ]]; then + if zstyle -s ":completion:${curcontext}:" preserve-prefix tmp1 && + [[ -n "$tmp1" && "$pre" = (#b)(${~tmp1})* ]]; then + + pre="$pre[${#match[1]}+1,-1]" + orig="$orig[${#match[1]}+1,-1]" + donepath="$match[1]" + prepaths=( '' ) + + elif [[ "$pre[1]" = / ]]; then # If it is a absolute path name, we remove the first slash and put it in # `donepath' meaning that we treat it as the path that was already handled. # Also, we don't use the paths from `-W'. -- Sven Wischnowsky wischnow@informatik.hu-berlin.de