* Preserve initial // in path name completion @ 2001-07-06 5:14 Andrej Borsenkow 2001-07-06 9:24 ` Sven Wischnowsky 0 siblings, 1 reply; 10+ messages in thread From: Andrej Borsenkow @ 2001-07-06 5:14 UTC (permalink / raw) To: ZSH Workers Mailing List 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? -andrej ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Preserve initial // in path name completion 2001-07-06 5:14 Preserve initial // in path name completion Andrej Borsenkow @ 2001-07-06 9:24 ` Sven Wischnowsky 2001-07-06 10:32 ` Andrej Borsenkow 0 siblings, 1 reply; 10+ messages in thread From: Sven Wischnowsky @ 2001-07-06 9:24 UTC (permalink / raw) To: zsh-workers 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 ^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: Preserve initial // in path name completion 2001-07-06 9:24 ` Sven Wischnowsky @ 2001-07-06 10:32 ` Andrej Borsenkow 2001-07-06 10:41 ` Sven Wischnowsky 0 siblings, 1 reply; 10+ messages in thread From: Andrej Borsenkow @ 2001-07-06 10:32 UTC (permalink / raw) To: zsh-workers > > 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. > To my immense surprise even with preserve-prefix unset (but with your patch and suitably set fake-files) and squeeze-slashes it happily completed inside UNC paths, even respecting all matchers. Looks, like fake-files win? > Would that be enough? I do not quite understand but may be it even is not needed? Anyway, the only problem. I have \\itsrm2\root$. I defined zstyle ':completion:*' fake-files //:itsrm2 //itsrm2:root\$ zstyle ':completion:*' squeeze-slashes true Then (tty1)% l //i/r/t/s/zTAB (tty1)% l //itsrm2/root\$/tools/share/z Completing files share/ src/ (tty1)% l //itsrm2/root\$/tools/src/zTAB No matches for: `files' or `file' I *do* have /tools/src/zsh: (tty1)% l //i/r/t/s/z/s/mTAB (tty1)% l //itsrm2/root\$/tools/src/zsh/s/m Completing files zsh/ zsh-4.0.x/ This obviously happens only with root$; any other share I've tried works. -andrej ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: RE: Preserve initial // in path name completion 2001-07-06 10:32 ` Andrej Borsenkow @ 2001-07-06 10:41 ` Sven Wischnowsky 2001-07-06 11:03 ` Andrej Borsenkow 0 siblings, 1 reply; 10+ messages in thread From: Sven Wischnowsky @ 2001-07-06 10:41 UTC (permalink / raw) To: zsh-workers Andrej Borsenkow wrote: > ... > > To my immense surprise even with preserve-prefix unset (but with your patch > and suitably set fake-files) and squeeze-slashes it happily completed inside > UNC paths, even respecting all matchers. Looks, like fake-files win? Err... the patch shouldn't make a difference with the style set, does it work without the patch, too? (And with the patch below.) > ... > > This obviously happens only with root$; any other share I've tried works. This was a more general problem because the test for parameter expansions in the string to complete didn't check if the `$' was preceded by a backslash. Fix below. I'll commit it (to the stable branch, too). 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 10:40:04 @@ -190,7 +190,7 @@ # Now let's have a closer look at the string to complete. -if [[ "$pre" = [^][*?#^\|\<\>]#(\`[^\`]#\`|\$)*/* && "$compstate[quote]" != \' ]]; then +if [[ "$pre" = [^][*?#^\|\<\>\\]#(\`[^\`]#\`|\$)*/* && "$compstate[quote]" != \' ]]; then # If there is a parameter expansion in the word from the line, we try # to complete the beast by expanding the prefix and completing anything -- Sven Wischnowsky wischnow@informatik.hu-berlin.de ^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: RE: Preserve initial // in path name completion 2001-07-06 10:41 ` Sven Wischnowsky @ 2001-07-06 11:03 ` Andrej Borsenkow 2001-07-06 11:16 ` Andrej Borsenkow 2001-07-06 12:22 ` Sven Wischnowsky 0 siblings, 2 replies; 10+ messages in thread From: Andrej Borsenkow @ 2001-07-06 11:03 UTC (permalink / raw) To: zsh-workers > > > ... > > > > To my immense surprise even with preserve-prefix unset (but > with your patch > > and suitably set fake-files) and squeeze-slashes it happily > completed inside > > UNC paths, even respecting all matchers. Looks, like fake-files win? > > Err... the patch shouldn't make a difference with the style set, does it > work without the patch, too? (And with the patch below.) > It happily works without the first patch. And the second does fix root$ problem. Wonder ... I guess I never tried it before but I presumed squeeze-slashes should prevent it. Can you explain why it works? (I mean, that we can be sure it continues to work in the future). -andrej ^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: RE: Preserve initial // in path name completion 2001-07-06 11:03 ` Andrej Borsenkow @ 2001-07-06 11:16 ` Andrej Borsenkow 2001-07-06 12:22 ` Sven Wischnowsky 1 sibling, 0 replies; 10+ messages in thread From: Andrej Borsenkow @ 2001-07-06 11:16 UTC (permalink / raw) To: zsh-workers > > Can you explain why it works? (I mean, that we can be sure it continues to > work in the future). > zstyle ':completion:*' fake-files /:cygdrive '/cygdrive:c d e h' //:itsrm2 '//itsrm2:source sni Microsoft Linux root$' zstyle ':completion:*' squeeze-slashes true -andrej ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: RE: RE: Preserve initial // in path name completion 2001-07-06 11:03 ` Andrej Borsenkow 2001-07-06 11:16 ` Andrej Borsenkow @ 2001-07-06 12:22 ` Sven Wischnowsky 2001-07-06 12:34 ` Andrej Borsenkow 2001-07-13 12:22 ` Andrej Borsenkow 1 sibling, 2 replies; 10+ messages in thread From: Sven Wischnowsky @ 2001-07-06 12:22 UTC (permalink / raw) To: zsh-workers Andrej Borsenkow wrote: > ... > > It happily works without the first patch. And the second does fix root$ > problem. Wonder ... I guess I never tried it before but I presumed > squeeze-slashes should prevent it. > > Can you explain why it works? (I mean, that we can be sure it continues to > work in the future). The C-code in computil.c adds the fake stuff before building the patterns. In another message: > zstyle ':completion:*' fake-files /:cygdrive '/cygdrive:c d e h' //:itsrm2 > '//itsrm2:source sni Microsoft Linux root$' > zstyle ':completion:*' squeeze-slashes true Err... yes? What do you want to tell me with that? :-} Bye Sven -- Sven Wischnowsky wischnow@informatik.hu-berlin.de ^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: RE: RE: Preserve initial // in path name completion 2001-07-06 12:22 ` Sven Wischnowsky @ 2001-07-06 12:34 ` Andrej Borsenkow 2001-07-13 12:22 ` Andrej Borsenkow 1 sibling, 0 replies; 10+ messages in thread From: Andrej Borsenkow @ 2001-07-06 12:34 UTC (permalink / raw) To: zsh-workers > In another message: > > > zstyle ':completion:*' fake-files /:cygdrive '/cygdrive:c d e > h' //:itsrm2 > > '//itsrm2:source sni Microsoft Linux root$' > > zstyle ':completion:*' squeeze-slashes true > > Err... yes? What do you want to tell me with that? :-} > I wanted to show the exact settimngs in use in case you needed it to answer the question. That's all :-) -andrej ^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: RE: RE: Preserve initial // in path name completion 2001-07-06 12:22 ` Sven Wischnowsky 2001-07-06 12:34 ` Andrej Borsenkow @ 2001-07-13 12:22 ` Andrej Borsenkow 2001-07-17 9:02 ` PATCH: " Sven Wischnowsky 1 sibling, 1 reply; 10+ messages in thread From: Andrej Borsenkow @ 2001-07-13 12:22 UTC (permalink / raw) To: Sven Wischnowsky, zsh-workers > > > > It happily works without the first patch. I just realized and verified that the original patch (15278) allows to complete after x:/, so I guess it should go in. Probably in both HEAD and 4.0 -andrej ^ permalink raw reply [flat|nested] 10+ messages in thread
* PATCH: Re: Preserve initial // in path name completion 2001-07-13 12:22 ` Andrej Borsenkow @ 2001-07-17 9:02 ` Sven Wischnowsky 0 siblings, 0 replies; 10+ messages in thread From: Sven Wischnowsky @ 2001-07-17 9:02 UTC (permalink / raw) To: zsh-workers Andrej Borsenkow wrote: > I just realized and verified that the original patch (15278) allows to > complete after x:/, so I guess it should go in. Probably in both HEAD and > 4.0 Ok. Andrej could you please check if what I wrote in the docs is correct (the Cygwin example in particular). Bye Sven Index: Completion/Unix/Type/_path_files =================================================================== RCS file: /cvsroot/zsh/zsh/Completion/Unix/Type/_path_files,v retrieving revision 1.8 diff -u -r1.8 _path_files --- Completion/Unix/Type/_path_files 2001/07/13 08:09:52 1.8 +++ Completion/Unix/Type/_path_files 2001/07/17 09:00:11 @@ -268,7 +268,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'. Index: Completion/Zsh/Command/_zstyle =================================================================== RCS file: /cvsroot/zsh/zsh/Completion/Zsh/Command/_zstyle,v retrieving revision 1.1 diff -u -r1.1 _zstyle --- Completion/Zsh/Command/_zstyle 2001/04/02 11:34:11 1.1 +++ Completion/Zsh/Command/_zstyle 2001/07/17 09:00:11 @@ -75,6 +75,7 @@ ports c:_ports prefix-hidden c:bool prefix-needed c:bool + preserve-prefix c:preserve-prefix range c: regular c:bool remote-access c:bool @@ -302,6 +303,10 @@ insunambig) _wanted values expl 'insert unambiguous string' compadd true false pattern + ;; + + preserve-prefix) + _message 'pattern matching prefix to keep' ;; urgh) Index: Doc/Zsh/compsys.yo =================================================================== RCS file: /cvsroot/zsh/zsh/Doc/Zsh/compsys.yo,v retrieving revision 1.128 diff -u -r1.128 compsys.yo --- Doc/Zsh/compsys.yo 2001/06/06 09:50:39 1.128 +++ Doc/Zsh/compsys.yo 2001/07/17 09:00:14 @@ -1834,6 +1834,16 @@ The default style for this style is `true'. ) +kindex(preserve-prefix, completion style) +item(tt(preserve-prefix))( +This style is used when completing path names. Its value should be a +pattern matching an initial prefix of the word to complete that should +be left unchanged under all circumstances. For example, on some Unices +an initial `tt(//)' (double slash) has a special meaning and hence +should be kept. For that one could set this style to the string +`tt(//)'. As another example, setting this style to `tt(?:/)' under +Cygwin would allow completion after `tt(a:/...)' and the like. +) kindex(range, completion style) item(tt(range))( This is used by the tt(_history) completer and the -- Sven Wischnowsky wischnow@informatik.hu-berlin.de ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2001-07-17 9:03 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2001-07-06 5:14 Preserve initial // in path name completion Andrej Borsenkow 2001-07-06 9:24 ` Sven Wischnowsky 2001-07-06 10:32 ` Andrej Borsenkow 2001-07-06 10:41 ` Sven Wischnowsky 2001-07-06 11:03 ` Andrej Borsenkow 2001-07-06 11:16 ` Andrej Borsenkow 2001-07-06 12:22 ` Sven Wischnowsky 2001-07-06 12:34 ` Andrej Borsenkow 2001-07-13 12:22 ` Andrej Borsenkow 2001-07-17 9:02 ` PATCH: " Sven Wischnowsky
Code repositories for project(s) associated with this public inbox https://git.vuxu.org/mirror/zsh/ This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).