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

Re: pws-19 + patches: parameter completion before pipeline



Andrej Borsenkow wrote:

> I just noted it. Is it intentional?
> 
> bor@itsrm2:/tools/src/zsh-3.1.5-pws-19%> zsh -f
> itsrm2% fpath=($PWD/Completion/*)
> itsrm2% source ./Completion/Core/compinit 
> itsrm2% zmodload parameter 
> itsrm2% print -l ${(k)opt<TAB> | grep glob
>                          ^ move cursor here
> B-e-e-p

The problem is that the lexer just gives us `${(k)opt<TAB> | grep glob'
as the string to complete. Then the completion code parses this and
takes `opt | grep glob' as the parameter name.
A simple fix would simply remove that part of such a string that can't 
be used as a parameter name. However, this would also mean that the
rest is completely ignored and does not even show up in $words.
The patch below does this, because trying to solve it in a way that
preserves the information about following words would be pretty
complicated (either temporarily inserting a closing brace when calling 
the lexer, but first finding out when this has to be done, or fiddling 
with the lexer, which is completely unacceptable).

Ok?

Bye
 Sven

diff -u os/Zle/zle_tricky.c Src/Zle/zle_tricky.c
--- os/Zle/zle_tricky.c	Wed May 26 08:42:58 1999
+++ Src/Zle/zle_tricky.c	Mon May 31 16:30:05 1999
@@ -751,6 +751,7 @@
 	    wb = cs - offs;
 	    we = wb + e - b;
 	    ispar = (br >= 2 ? 2 : 1);
+	    b[we-wb] = '\0';
 	    return b;
 	}
     }

--
Sven Wischnowsky                         wischnow@xxxxxxxxxxxxxxxxxxxxxxx



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