zsh-workers
 help / color / mirror / code / Atom feed
From: Geoff Wing <gcw@zsh.org>
To: Zsh Hackers <zsh-workers@sunsite.dk>
Subject: Re: Geoff's prompt escape sequences patch (workers/23924)
Date: Sat, 17 Nov 2007 20:26:55 +1100	[thread overview]
Message-ID: <20071117092655.GA19365@primenet.com.au> (raw)
In-Reply-To: <071116084537.ZM20036@torch.brasslantern.com>

On Saturday 2007-11-17 03:46 +1100, Bart Schaefer output:
:On Nov 16,  3:57pm, Mikael Magnusson wrote:
:} Subject: Re: Geoff's prompt escape sequences patch (workers/23924)
:} I've found another problem that seems to be caused by this patch
:} (located by git-bisect). When a bg'd job finishes, the cursor is drawn
:} in the wrong place in the new prompt (#bar characters to the left).
:
:It would appear that the starting position for the right prompt is not
:being recomputed correctly.  It's not just that the cursor is moved
:left; RPS1 still begins at the same column even though it is shorter,
:so it doesn't reach all the way to the margin.
:The cursor positioning error is probably only apparent when the number
:of bytes in the terminfo "move left N" string is less than the number
:in "move to position X,Y".

Yes, my fault.  reexpandprompt() needs to happen before resetvideo()
which uses the prompt sizes.

:} The simplest test case i could find was
:} zsh -f
:} PS1="frobnizz %#"      #not really needed but since the default
:} depends on hostname...
:} RPS1="foo%(1j.bar.)"
:} true &
:The effect is more obvious if you change to RPS1="%(1j.bar.)foo"

I'll think this through properly a bit later (in a couple of days
or so), though I currently think this fixes it.

Regards,
Geoff

Index: Src/Zle/zle_refresh.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/zle_refresh.c,v
retrieving revision 1.49
diff -u -r1.49 zle_refresh.c
--- Src/Zle/zle_refresh.c	19 Oct 2007 01:33:09 -0000	1.49
+++ Src/Zle/zle_refresh.c	17 Nov 2007 09:22:47 -0000
@@ -446,7 +446,6 @@
     int tmpcs, tmpll;		/* ditto cursor position and line length     */
     int tmpalloced;		/* flag to free tmpline when finished        */
     int remetafy;		/* flag that zle line is metafied            */
-    int fixprompt;		/* we still need to reexpand the prompt      */
     struct rparams rpms;
     
     /* If this is called from listmatches() (indirectly via trashzle()), and *
@@ -540,11 +539,6 @@
 	    listshown = 0;
 	}
 #endif
-	fixprompt = trashedzle;
-	resetvideo();
-	resetneeded = 0;	/* unset */
-	oput_rpmpt = 0;		/* no right-prompt currently on screen */
-
 	/* we probably should only have explicitly set attributes */
 	tsetcap(TCALLATTRSOFF, 0);
 	tsetcap(TCSTANDOUTEND, 0);
@@ -552,6 +546,12 @@
 	/* cheat on attribute unset */
 	txtunset(TXTBOLDFACE|TXTSTANDOUT|TXTUNDERLINE|TXTDIRTY);
 
+	if (trashedzle)
+	    reexpandprompt(); 
+	resetvideo();
+	resetneeded = 0;	/* unset */
+	oput_rpmpt = 0;		/* no right-prompt currently on screen */
+
         if (!clearflag) {
             if (tccan(TCCLEAREOD))
                 tcout(TCCLEAREOD);
@@ -562,8 +562,6 @@
 	}
         if (t0 > -1)
             olnct = (t0 < winh) ? t0 : winh;
-	if (fixprompt)
-	    reexpandprompt(); 
         if (termflags & TERM_SHORT)
             vcs = 0;
 	else if (!clearflag && lpromptbuf[0]) {


  reply	other threads:[~2007-11-17  9:27 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-18 13:59 Bart Schaefer
2007-10-19  1:36 ` Geoff Wing
2007-11-16 14:57 ` Mikael Magnusson
2007-11-16 16:45   ` Bart Schaefer
2007-11-17  9:26     ` Geoff Wing [this message]
2007-11-17 10:13       ` Mikael Magnusson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20071117092655.GA19365@primenet.com.au \
    --to=gcw@zsh.org \
    --cc=zsh-workers@sunsite.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).