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

* 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, 0 replies; 4+ messages in thread
From: Oliver Kiddle @ 2000-02-08 13:59 UTC (permalink / raw)
  To: Zsh workers

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.

Oliver


^ 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

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).