zsh-workers
 help / color / mirror / code / Atom feed
* Re: Problem with completion after a variable with globcomplete
@ 2000-02-08 14:28 Sven Wischnowsky
  2000-02-14 12:23 ` help with _match, globcomplete etc Oliver Kiddle
  0 siblings, 1 reply; 5+ 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] 5+ messages in thread

* help with _match, globcomplete etc.
  2000-02-08 14:28 Problem with completion after a variable with globcomplete Sven Wischnowsky
@ 2000-02-14 12:23 ` Oliver Kiddle
  0 siblings, 0 replies; 5+ messages in thread
From: Oliver Kiddle @ 2000-02-14 12:23 UTC (permalink / raw)
  To: zsh-workers

Sven Wischnowsky wrote:

> (there is almost no real reason to use
> GLOB_COMPLETE nowadays, the _match completer should be better -- and
> configurable).

I've just been trying to fathom out what is going on with respect to
when zsh expands, menu completes expansions and doesn't expand. It all
is a little bit complicated, especially as the behaviour is controlled
by a mix of options, styles and the choice of widget that tab is bound
to.

Part of the trouble is the way zsh's shell expansion works. If you use
expand-or-complete, I can't see any way of customising what is and isn't
expanded - variables, globs and history are, tildes are not. The
behaviour which I would like is that variables are not expanded unless I
specifically use a widget bound to '^X$' - like tcsh's expand-variables
widget. Would it be possible for the shell expansion used in completion
to be controlled by a style?

The reason I still use glob_complete is that it allows some action when
completing glob patterns (menu completion though I'd prefer expansion in
the case of files) while not expanding variables.

I can however see that the _match completer is better, mainly in that I
can choose menu completion where only one argument is required and
expansion where many are required.

Another thing which I would like to configure with expansion is when
there is only one match, I'd prefer if the space suffix was not added -
this is one of the things that makes the variable expansion annoying.
Ideally, the suffix would be as if normal completion was used so
directories would get a '/'.

Oliver Kiddle

PS. Sorry about sending the wrapped patch before - I forgot to disable
wrapping in my mailer. I can resend it if that would be useful to
anyone.


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

* Re: Problem with completion after a variable with globcomplete
  2000-02-08 10:07 Problem with completion after a variable with globcomplete Sven Wischnowsky
@ 2000-02-08 13:59 ` Oliver Kiddle
  0 siblings, 0 replies; 5+ 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] 5+ 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; 5+ 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] 5+ messages in thread

* Problem with completion after a variable with globcomplete
@ 2000-02-07 14:39 Oliver Kiddle
  0 siblings, 0 replies; 5+ 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] 5+ messages in thread

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

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-02-08 14:28 Problem with completion after a variable with globcomplete Sven Wischnowsky
2000-02-14 12:23 ` help with _match, globcomplete etc Oliver Kiddle
  -- strict thread matches above, loose matches on Subject: below --
2000-02-08 10:07 Problem with completion after a variable with globcomplete Sven Wischnowsky
2000-02-08 13:59 ` Oliver Kiddle
2000-02-07 14:39 Oliver Kiddle

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