From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4772 invoked from network); 28 Jun 1997 05:51:08 -0000 Received: from euclid.skiles.gatech.edu (list@130.207.146.50) by ns1.primenet.com.au with SMTP; 28 Jun 1997 05:51:08 -0000 Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id BAA03261; Sat, 28 Jun 1997 01:39:02 -0400 (EDT) Resent-Date: Sat, 28 Jun 1997 01:39:02 -0400 (EDT) Date: Fri, 27 Jun 1997 22:48:56 -0700 Message-Id: <199706280548.WAA00051@candle.brasslantern.com> From: Bart Schaefer To: zsh-workers@math.gatech.edu Subject: Minor patch to 3.0.4 for ALWAYS_LAST_PROMPT Reply-to: Bart Schaefer Resent-Message-ID: <"aGq5Z1.0.ro.rDAjp"@euclid> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/3322 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu I'm sure I sent some mail about this quite a while ago -- probably back in February, judging by the edit dates on some files. The manual entry for ALWAYS_LAST_PROMPT says: If unset, key functions that list comple- tions try to return to the last prompt if given a numeric argument. If set these func- tions try to return to the last prompt if given no numeric argument. What the code does, however, is act this way if an argument *other* *than 1* is given. That is, ESC 2 ... or even ESC 0 ... produces the desired effect, but ESC 1 ... does not. The fix is to look at `gotmult', rather than comparing `zmult' to 1. Here's a patch against 3.0.4; I don't know where it applies to 3.1.x. Index: Src/zle_main.c =================================================================== --- zle_main.c 1997/06/27 18:37:06 1.1.1.4 +++ zle_main.c 1997/06/28 05:20:02 1.4 @@ -1110,8 +1110,8 @@ return; trashzle(); clearflag = (isset(USEZLE) && !termflags && - (isset(ALWAYSLASTPROMPT) && zmult == 1)) || - (unset(ALWAYSLASTPROMPT) && zmult != 1); + (isset(ALWAYSLASTPROMPT) && !gotmult)) || + (unset(ALWAYSLASTPROMPT) && gotmult); printbind(keybuf, (len = strlen(keybuf)) ? len : 1, 0); fprintf(shout, " is "); if (cmd == z_sendstring) { @@ -1157,8 +1157,8 @@ funcfound = 0; trashzle(); clearflag = (isset(USEZLE) && !termflags && - (isset(ALWAYSLASTPROMPT) && zmult == 1)) || - (unset(ALWAYSLASTPROMPT) && zmult != 1); + (isset(ALWAYSLASTPROMPT) && !gotmult)) || + (unset(ALWAYSLASTPROMPT) && gotmult); if (func == z_selfinsert || func == z_undefinedkey) fprintf(shout, "%s is on many keys", zlecmds[func].name); else { Index: Src/zle_tricky.c =================================================================== --- zle_tricky.c 1997/06/27 18:37:07 1.1.1.4 +++ zle_tricky.c 1997/06/28 05:20:16 1.4 @@ -2146,8 +2146,8 @@ trashzle(); clearflag = (isset(USEZLE) && !termflags && - (isset(ALWAYSLASTPROMPT) && zmult == 1)) || - (unset(ALWAYSLASTPROMPT) && zmult != 1); + (isset(ALWAYSLASTPROMPT) && !gotmult)) || + (unset(ALWAYSLASTPROMPT) && gotmult); up = printfmt(expl, nmatches, 1); @@ -3519,8 +3519,8 @@ showinglist = 0; clearflag = (isset(USEZLE) && !termflags && - (isset(ALWAYSLASTPROMPT) && zmult == 1)) || - (unset(ALWAYSLASTPROMPT) && zmult != 1); + (isset(ALWAYSLASTPROMPT) && !gotmult)) || + (unset(ALWAYSLASTPROMPT) && gotmult); arr = amatches;