From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12501 invoked from network); 21 Oct 2000 03:01:25 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 21 Oct 2000 03:01:25 -0000 Received: (qmail 16364 invoked by alias); 21 Oct 2000 03:01:19 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 13055 Received: (qmail 16357 invoked from network); 21 Oct 2000 03:01:18 -0000 From: "Bart Schaefer" Message-Id: <1001021030112.ZM9321@candle.brasslantern.com> Date: Sat, 21 Oct 2000 03:01:12 +0000 In-Reply-To: <14832.44455.892766.386987@phl.itasoftware.com> Comments: In reply to greg@itasoftware.com (Greg Klanderman) "Re: script using vared to read commands - history bug" (Oct 20, 4:40pm) References: <14831.50805.334555.712481@phl.itasoftware.com> <1001020075755.ZM8068@candle.brasslantern.com> <14832.44455.892766.386987@phl.itasoftware.com> X-Mailer: Z-Mail (5.0.0 30July97) To: zsh-workers@sunsite.auc.dk Subject: PATCH: Re: script using vared to read commands - history bug Cc: Greg Klanderman MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii I wrote: } If there's a straightforward solution to this, I don't know enough about } the history mechanism to find it quickly. The following seems to take care of it. Does anyone foresee any ill side- effects that I haven't? This makes `dohist = 2' override the current state of (interact && isset(SHINSTDIN)) and start the history mechanism regardless. Index: Src/hist.c =================================================================== @@ -736,7 +736,12 @@ { isfirstln = isfirstch = 1; errflag = histdone = 0; - stophist = (!dohist || !interact || unset(SHINSTDIN)) ? 2 : 0; + if (!dohist) + stophist = 2; + else if (dohist != 2) + stophist = (!interact || unset(SHINSTDIN)) ? 2 : 0; + else + stophist = 0; if (stophist == 2 || (inbufflags & INP_ALIAS)) { chline = hptr = NULL; hlinesz = 0; @@ -764,7 +769,7 @@ if (hist_ring && !hist_ring->ftim) hist_ring->ftim = time(NULL); - if (interact && isset(SHINSTDIN) && !strin) { + if ((dohist == 2 || (interact && isset(SHINSTDIN))) && !strin) { histactive = HA_ACTIVE; attachtty(mypgrp); linkcurline(); Index: Src/Zle/zle_main.c =================================================================== @@ -903,7 +903,7 @@ if (ops['e']) isfirstln = 1; if (ops['h']) - hbegin(1); + hbegin(2); t = (char *) zleread(p1, p2, ops['h'] ? ZLRF_HISTORY : 0); if (ops['h']) hend(NULL); -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.brasslantern.com Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net