zsh-workers
 help / color / mirror / code / Atom feed
* Problem with completion after a variable with globcomplete
@ 2000-02-07 14:39 Oliver Kiddle
  0 siblings, 0 replies; 4+ messages in thread
From: Oliver Kiddle @ 2000-02-07 14:39 UTC (permalink / raw)
  To: Zsh workers

zsh -f
autoload -U compinit
compinit
setopt globcomplete
f=/home
cd $f/okiddle/<tab>

Here the tab, inserts a space when I would expect it to list directories
in my home. It seems to be that completion stops working for the second
directory after a variable reference.

Oliver Kiddle


^ permalink raw reply	[flat|nested] 4+ messages in thread
* Re: Problem with completion after a variable with globcomplete
@ 2000-02-08 10:07 Sven Wischnowsky
  2000-02-08 13:59 ` Oliver Kiddle
  0 siblings, 1 reply; 4+ messages in thread
From: Sven Wischnowsky @ 2000-02-08 10:07 UTC (permalink / raw)
  To: zsh-workers


Oliver Kiddle wrote:

> zsh -f
> autoload -U compinit
> compinit
> setopt globcomplete
> f=/home
> cd $f/okiddle/<tab>
> 
> Here the tab, inserts a space when I would expect it to list directories
> in my home. It seems to be that completion stops working for the second
> directory after a variable reference.

The test if we had a pattern went wrong.

Bye
 Sven

diff -ru ../z.old/Completion/Core/_path_files Completion/Core/_path_files
--- ../z.old/Completion/Core/_path_files	Tue Feb  8 10:16:39 2000
+++ Completion/Core/_path_files	Tue Feb  8 11:06:02 2000
@@ -452,7 +452,7 @@
 
     if (( $#tmp4 )) ||
        [[ -n "$compstate[pattern_match]" &&
-          "$PREFIX$SUFFIX" != "${(q)PREFIX}${(q)SUFFIX}" ]]; then
+          "${PREFIX:s/$//}${SUFFIX:s/$//}" != "${(q)PREFIX:s/$//}${(q)SUFFIX:s/$//}" ]]; then
 
       # It is. For menucompletion we now add the possible completions
       # for this component with the unambigous prefix we have built

--
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


^ permalink raw reply	[flat|nested] 4+ messages in thread
* Re: Problem with completion after a variable with globcomplete
@ 2000-02-08 14:28 Sven Wischnowsky
  0 siblings, 0 replies; 4+ messages in thread
From: Sven Wischnowsky @ 2000-02-08 14:28 UTC (permalink / raw)
  To: zsh-workers


Oliver Kiddle wrote:

> Sven Wischnowsky wrote:
> > 
> > Oliver Kiddle wrote:
> > 
> > > zsh -f
> > > autoload -U compinit
> > > compinit
> > > setopt globcomplete
> > > f=/home
> > > cd $f/okiddle/<tab>
> > >
> > > Here the tab, inserts a space when I would expect it to list directories
> > > in my home. It seems to be that completion stops working for the second
> > > directory after a variable reference.
> > 
> > The test if we had a pattern went wrong.
> 
> Thanks, this fixes it for the case above but I noticed that the problem
> is still there for arrays. I've also found that the problem also exists
> for tilde expansion - using ${(q)...) quotes a tilde and square
> brackets.
> 
> > -          "$PREFIX$SUFFIX" != "${(q)PREFIX}${(q)SUFFIX}" ]]; then
> > +          "${PREFIX:s/$//}${SUFFIX:s/$//}" != "${(q)PREFIX:s/$//}${(q)SUFFIX:s/$//}"
> 
> I can send a patch which as far as I know fixes the problem by extending
> your logic there to take out tildes and square brackets but I don't
> really understand the context in which that line has been used (and why
> the globcomplete option should affect it) and so I'm not sure that it
> wouldn't break anything else in the process. The condition seems to be
> checking for any characters which might need to be quoted in $PREFIX and
> $SUFFIX. I would have thought that any character could appear as part of
> the command-line.

The line was added in 9454 -- trying to make the interaction with the
_match completer a bit smoother (there is almost no real reason to use 
GLOB_COMPLETE nowadays, the _match completer should be better -- and
configurable).

If GLOB_COMPLETE is set, then `$compstate[pattern_match]' is set to
`*' by the completion code (compatibility).


Ok, the patch below changes the test to not look at the components
already processed.

Bye
 Sven

diff -ru ../z.old/Completion/Core/_path_files Completion/Core/_path_files
--- ../z.old/Completion/Core/_path_files	Tue Feb  8 14:12:36 2000
+++ Completion/Core/_path_files	Tue Feb  8 15:22:19 2000
@@ -445,15 +445,15 @@
     if [[ "$tpre" = */* ]]; then
       PREFIX="${donepath}${linepath}${cpre}${tpre%%/*}"
       SUFFIX="/${tsuf#*/}"
+      tmp2="${cpre}${tpre%%/*}"
     else
       PREFIX="${donepath}${linepath}${cpre}${tpre}"
       SUFFIX="${tsuf}"
+      tmp2="${cpre}${tpre}"
     fi
 
     if (( $#tmp4 )) ||
-       [[ -n "$compstate[pattern_match]" &&
-          "${PREFIX:s/$//}${SUFFIX:s/$//}" != "${(q)PREFIX:s/$//}${(q)SUFFIX:s/$//}" ]]; then
-
+       [[ -n "$compstate[pattern_match]" && "$tmp2" != "${(q)tmp2}" ]]; then
       # It is. For menucompletion we now add the possible completions
       # for this component with the unambigous prefix we have built
       # and the rest of the string from the line as the suffix.

--
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2000-02-08 14:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-02-07 14:39 Problem with completion after a variable with globcomplete Oliver Kiddle
2000-02-08 10:07 Sven Wischnowsky
2000-02-08 13:59 ` Oliver Kiddle
2000-02-08 14:28 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).