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

PATCH: Re: script using vared to read commands - history bug



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   



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