From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17627 invoked from network); 12 Jul 2000 21:16:52 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 12 Jul 2000 21:16:52 -0000 Received: (qmail 9123 invoked by alias); 12 Jul 2000 21:16:29 -0000 Mailing-List: contact zsh-users-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 3274 Received: (qmail 9116 invoked from network); 12 Jul 2000 21:16:29 -0000 Date: Wed, 12 Jul 2000 23:18:15 +0200 (CEST) From: Christoph Lange Reply-To: Christoph Lange To: Bart Schaefer cc: zsh-users@sunsite.auc.dk Subject: Re: ZLE Widget: Insert last word (except &) In-Reply-To: <1000712185437.ZM18513@candle.brasslantern.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Wed, 12 Jul 2000, Bart Schaefer wrote: > On Jul 12, 6:38pm, Christoph Lange wrote: > } Subject: Re: ZLE Widget: Insert last word (except &) > } > } There is another bug in your version of smart-insert-last-word: repeated > } calls to it don't go back in the history. > > Oops, I forgot about that behavior. > > } Rather than doing the word > } splitting yourself, you should always call insert-last-word > > Nah. > > The fiddling with NUMERIC below serves two purposes: One, it passes the > same value to both up-history and down-history without having to pass an > argument to each. Two, `zle WIDGET -n NUM' is broken for NUM > 9. > > ---- 8< ---- cut ---- 8< ---- > # smart-insert-last-word > > [...] I didn't understand all of it, but now the functions even fails doing elementar things: % echo a & a % echo ^ [Alt+.] pressed I found out another interesting thing about my first version. zsh goes up in the history on subsequent calls of insert-last-word, but from the widget's point of view, the position in the history remains the same. Either determining the previous line with `fc -n -l -1' or -- like in your widget -- going up the history and reading from $BUFFER always returns the previous line relative from the position where the user started calling insert-last-word. Just look at the following result: % echo 1 % echo 1& % [[Subsequent invocations of insert-last-word:]] 1. `1' 2. `echo' lastcmd always contains `echo 1&', regardless of the shell going up the history. Thus, the last but one word is inserted into the command line. What to do? Christoph -- Q: After bootup, a linux machine hangs, showing the error message `login:'. How can I fix this? A: This system hang is a big enough problem to justify replacing Linux with Windows 2000. Christoph Lange, langec@gmx.de, http://www.cul.de/home/yaph/, ICQ #51191833