Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: re-expand the prompt automatically
- X-seq: zsh-users 7652
 
- From: Wayne Davison <wayned@xxxxxxxxxxxxxxxxxxxxx>
 
- To: Oliver Kiddle <okiddle@xxxxxxxxxxx>
 
- Subject: PATCH: re-expand the prompt automatically
 
- Date: Thu, 1 Jul 2004 09:44:46 -0700
 
- Cc: Zsh users list <zsh-users@xxxxxxxxxx>
 
- In-reply-to: <23265.1088685020@xxxxxxxxxxxxxxxxxxxxx>
 
- Mailing-list: contact zsh-users-help@xxxxxxxxxx; run by ezmlm
 
- References: <200407011214.i61CEhUe012898@xxxxxxxxxxxxxx> <23265.1088685020@xxxxxxxxxxxxxxxxxxxxx>
 
On Thu, Jul 01, 2004 at 02:30:20PM +0200, Oliver Kiddle wrote:
> Is there any chance this could be automatically called before the
> prompt is reprinted when a background job finishes? That would allow %j
> prompt expansions to be right.
I had this same thought.  Here's a patch that makes the re-expanding
part of the new function get called from zrefresh().  If that turns out
to be too pervasive, we could mod_export the new reexpandprompt()
function and call it from various other places in the code, such as
from jobs.c.
..wayne..
--- Src/Zle/zle_main.c	1 Jul 2004 14:55:58 -0000	1.46
+++ Src/Zle/zle_main.c	1 Jul 2004 16:42:30 -0000
@@ -1311,14 +1311,20 @@ recursiveedit(UNUSED(char **args))
 }
 
 /**/
-int
-resetprompt(UNUSED(char **args))
+void
+reexpandprompt(void)
 {
     free(lpromptbuf);
     lpromptbuf = promptexpand(raw_lp, 1, NULL, NULL);
     free(rpromptbuf);
     rpromptbuf = promptexpand(raw_rp, 1, NULL, NULL);
+}
 
+/**/
+int
+resetprompt(UNUSED(char **args))
+{
+    reexpandprompt();
     return redisplay(NULL);
 }
 
--- Src/Zle/zle_refresh.c	2 Jun 2004 22:15:02 -0000	1.12
+++ Src/Zle/zle_refresh.c	1 Jul 2004 16:42:30 -0000
@@ -291,7 +291,8 @@ zrefresh(void)
     unsigned char *tmpline;	/* line with added pre/post text */
     int tmpcs, tmpll;		/* ditto cursor position and line length */
     int tmpalloced;		/* flag to free tmpline when finished */
-	
+
+    reexpandprompt();
 
     /* If this is called from listmatches() (indirectly via trashzle()), and *
      * that was called from the end of zrefresh(), then we don't need to do  *
Messages sorted by:
Reverse Date,
Date,
Thread,
Author