zsh-workers
 help / color / mirror / code / Atom feed
* Re:  Two more (possible) problems with the new completion...
@ 1998-11-05 12:05 Sven Wischnowsky
  1998-11-05 12:44 ` PATCH: " Peter Stephenson
  0 siblings, 1 reply; 4+ messages in thread
From: Sven Wischnowsky @ 1998-11-05 12:05 UTC (permalink / raw)
  To: zsh-workers


Peter Stephenson wrote:

> 
> Maybe these are just the result of badly applied patches, like the
> last two, but if they are I'll never know without asking...
> 
> 1) The following works (and very useful it is, too: goodbye, cdmatch):
> 
> compctl -W "($cdpath)" -/ cd
> 
> but the following, which as far as I can see should be equivalent
> apart from tracking changes in $cdpath, doesn't:
> 
> compctl -W '$cdpath' -/ cd
> 
> (no matches produced).
> 

`-W' behaves like `-k', you only need `compctl -W cdpath -/ cd'. There 
is some extra hacklet that ensures that the old style (giving one
directory) still works (in most cases): if the string isn't an
parameter name, it is used directly as a directory name. So, unless
you have a directory named `$cdpath' (*not* the value of `cdpath') it
will produce no matches.

> 
> 2) I suppose this is more than a misplaced fixsuffix(); you need
> menucompletion set, though setting automenu and hitting <TAB> twice
> has the same effect:
> 
> compctl -q -S / -k '(foo bar)' echo
>         ^^^^^^^ this is the important bit
> 
> % echo <TAB> -> bar/
>                    ^cursor here, over the slash
> 
> followed by <RET>:
> 
> % echo ba/
> ba/
> 
> so at some point the cursor is being put one character too far back.
> It doesn't happen with a `genuine' autoremoveslash.

This is a real bug (there really is an embarassing number of them,
sigh). The cursor should be moved on the suffix only when completing
inside words (paths, whatever).

Bye
 Sven

*** os/Zle/zle_tricky.c	Thu Nov  5 13:02:37 1998
--- Src/Zle/zle_tricky.c	Thu Nov  5 13:02:45 1998
***************
*** 5068,5074 ****
      if (menuwe && m->ripre && isset(AUTOPARAMKEYS))
  	makeparamsuffix(((m->flags & CMF_PARBR) ? 1 : 0), menuinsc);
  
!     if (menucmp)
  	cs = menuend;
  }
  
--- 5068,5074 ----
      if (menuwe && m->ripre && isset(AUTOPARAMKEYS))
  	makeparamsuffix(((m->flags & CMF_PARBR) ? 1 : 0), menuinsc);
  
!     if (menucmp && !menuwe)
  	cs = menuend;
  }
  


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


^ permalink raw reply	[flat|nested] 4+ messages in thread
* Re:  PATCH: Re: Two more (possible) problems with the new completion...
@ 1998-11-05 13:21 Sven Wischnowsky
  0 siblings, 0 replies; 4+ messages in thread
From: Sven Wischnowsky @ 1998-11-05 13:21 UTC (permalink / raw)
  To: zsh-workers


Peter Stephenson wrote:

> 
> Sven Wischnowsky wrote:
> > `-W' behaves like `-k', you only need `compctl -W cdpath -/ cd'. There 
> > is some extra hacklet that ensures that the old style (giving one
> > directory) still works (in most cases): if the string isn't an
> > parameter name, it is used directly as a directory name. So, unless
> > you have a directory named `$cdpath' (*not* the value of `cdpath') it
> > will produce no matches.
> 
> Fine, but ... :-)
> 
> In this case the return value of get_user_var() is a pointer to the
> stored array itself, so the array shouldn't be modified.  The present
> code does a mischief to the value of $cdpath after the completion is
> finished.  The patch below fixes it (I can even do this one myself).

Thanks. The patch below goes on top of this, just to keep gcc quiet.

BTW, in the Peter's glob patch he added some braces to keep gcc from
emitting lots of `ambiguous else' warnings and I've similiar things in 
zle_tricky.c. We should remember to fix all of these (and the `char
used as subscript' warnings) before the next official release.
all th

Bye
 Sven

*** os/Zle/zle_tricky.c	Thu Nov  5 14:17:03 1998
--- Src/Zle/zle_tricky.c	Thu Nov  5 14:17:08 1998
***************
*** 3848,3854 ****
  
  		    if ((pp = get_user_var(cc->withd))) {
  			dirs = npp =
! 			    (char*) halloc(sizeof(char *)*(arrlen(pp)+1));
  			while (*pp) {
  			    pl = strlen(*pp);
  			    tp = (char *) halloc(strlen(*pp) + tl);
--- 3848,3854 ----
  
  		    if ((pp = get_user_var(cc->withd))) {
  			dirs = npp =
! 			    (char**) halloc(sizeof(char *)*(arrlen(pp)+1));
  			while (*pp) {
  			    pl = strlen(*pp);
  			    tp = (char *) halloc(strlen(*pp) + tl);


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


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

end of thread, other threads:[~1998-11-05 13:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1998-11-05 12:05 Two more (possible) problems with the new completion Sven Wischnowsky
1998-11-05 12:44 ` PATCH: " Peter Stephenson
1998-11-05 12:56   ` Peter Stephenson
1998-11-05 13:21 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).