Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Working with the historywords special parameter
- X-seq: zsh-workers 15715
- From: Felix Rosencrantz <f_rosencrantz@xxxxxxxxx>
- To: zsh-workers@xxxxxxxxxx
- Subject: Re: Working with the historywords special parameter
- Date: Mon, 27 Aug 2001 23:19:20 -0700 (PDT)
- In-reply-to: <1010824170526.ZM28196@xxxxxxxxxxxxxxxxxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
--- Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx> wrote:
>Have you tried using $history instead of $historywords? You want the
>word that comes immediately after $words[CURRENT-1] in every history
>line that contains $word[CURRENT-1], right?
>
> local w p h r
> w=${(q)words[CURRENT-1]}
> p=$'\0'$w$'\0'
> h=$'\0'${(pj:\0:)${(z)history[(R)*$w*]}}
> r=( ${${(ps:\1:)h//$~p/$'\1'}%%$'\0'*} )
> compadd -a r
>
>This assumes there are no literal NUL or ctrl-A characters in the
>history, but that seems a pretty safe assumption.
I tried Sven's suggestion and that worked fine. I then tried Bart's
suggestion, and that worked really fast. However, there were two
problems. One a seg fault in the shell when completing for a word that
had either one or no matches (stack in a separate post). The other problem
is that it didn't know about line boundaries. So if the searched for word was
at the end of the line, then it would return a match for the previous
command, which is wrong.
I didn't try Bart's other suggestion for getting indexes. So don't have
anything to say about that versus a new "M" modifier.
Also, I was wondering if the (z) modifier applied to the elements of history
would always return the same results as found by historywords?
-FR
__________________________________________________
Do You Yahoo!?
Make international calls for as low as $.04/minute with Yahoo! Messenger
http://phonecard.yahoo.com/
Messages sorted by:
Reverse Date,
Date,
Thread,
Author