Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Two more (possible) problems with the new completion...



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



Messages sorted by: Reverse Date, Date, Thread, Author