From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8486 invoked from network); 28 Apr 2000 08:33:13 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 28 Apr 2000 08:33:13 -0000 Received: (qmail 10225 invoked by alias); 28 Apr 2000 08:33:07 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 10996 Received: (qmail 10207 invoked from network); 28 Apr 2000 08:33:05 -0000 From: "Bart Schaefer" Message-Id: <1000428083231.ZM24404@candle.brasslantern.com> Date: Fri, 28 Apr 2000 08:32:31 +0000 X-Mailer: Z-Mail (5.0.0 30July97) To: zsh-workers@sunsite.auc.dk Subject: Dear old literal history MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Does anyone else ever get nostalgic for "literal history"? This used to be turned on by `setopt HIST_LIT' (or `set -j' for those wondering why the single-letter options skip from -i to -k). Occasionally this was useful if one wrote a complicated history substitution which failed in some small way, and one therefore wanted to edit the line from *before* history was expanded. I was about to suggest that it would be pretty easy now to reinstate the literal history via ZLE widgets, when I discovered by an accident of search terms that I already did so back in zsh-workers/4269. Except that now it's possible to do a much better job, and widgets don't work quite like they did a year and a half ago anyway. ------------------------------------------------------------------------- typeset -A zle_lines typeset -i zle_hist precmd() { zle_hist=${(%%):-%h} # The one icky bit ((zle_hist > HISTSIZE)) && unset zle_lines\[$[zle_hist-HISTSIZE]\] } zle-store () { zle_lines[$zle_hist]=$BUFFER zle .accept-line } zle-fetch-previous () { zle .up-history || return 1 (($+zle_lines[$HISTNO])) && BUFFER=$zle_lines[$HISTNO] return 0 } zle-fetch-next () { NUMERIC=-${NUMERIC:-1} zle-fetch-previous } zle -N zle-store zle -N zle-fetch-next zle -N zle-fetch-previous zle -A zle-store accept-line ------------------------------------------------------------------------- An exercise for someone (maybe me, not tonight): Implement LITHISTSIZE. (That means one can't use .up-history and HISTNO, which gets ugly.) -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.brasslantern.com