Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Preserve initial // in path name completion



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@xxxxxxxxxxxxxxxxxxxxxxx



Messages sorted by: Reverse Date, Date, Thread, Author