Module Name:    src
Committed By:   christos
Date:           Tue Mar 31 17:38:27 UTC 2009

Modified Files:
        src/lib/libedit: editline.3 el.c histedit.h prompt.c prompt.h refresh.c
            term.c term.h
        src/lib/libedit/TEST: tc1.c

Log Message:
Implement literal prompt sequences. Now someone can implement
RL_PROMPT_START_LITERAL/RL_PROMPT_END_LITERAL :-)


To generate a diff of this commit:
cvs rdiff -u -r1.64 -r1.65 src/lib/libedit/editline.3
cvs rdiff -u -r1.50 -r1.51 src/lib/libedit/el.c src/lib/libedit/term.c
cvs rdiff -u -r1.38 -r1.39 src/lib/libedit/histedit.h
cvs rdiff -u -r1.13 -r1.14 src/lib/libedit/prompt.c
cvs rdiff -u -r1.8 -r1.9 src/lib/libedit/prompt.h
cvs rdiff -u -r1.29 -r1.30 src/lib/libedit/refresh.c
cvs rdiff -u -r1.19 -r1.20 src/lib/libedit/term.h
cvs rdiff -u -r1.1 -r1.2 src/lib/libedit/TEST/tc1.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libedit/editline.3
diff -u src/lib/libedit/editline.3:1.64 src/lib/libedit/editline.3:1.65
--- src/lib/libedit/editline.3:1.64	Tue Mar 10 18:55:14 2009
+++ src/lib/libedit/editline.3	Tue Mar 31 13:38:27 2009
@@ -1,4 +1,4 @@
-.\"	$NetBSD: editline.3,v 1.64 2009/03/10 22:55:14 wiz Exp $
+.\"	$NetBSD: editline.3,v 1.65 2009/03/31 17:38:27 christos Exp $
 .\"
 .\" Copyright (c) 1997-2003 The NetBSD Foundation, Inc.
 .\" All rights reserved.
@@ -26,7 +26,7 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd March 10, 2009
+.Dd March 31, 2009
 .Dt EDITLINE 3
 .Os
 .Sh NAME
@@ -218,10 +218,22 @@
 .Fa op
 are supported, along with the required argument list:
 .Bl -tag -width 4n
-.It Dv EL_PROMPT , Fa "char *(*f)(EditLine *)"
+.It Dv EL_PROMPT , Fa "char *(*f)(EditLine *)", Fa "char c"
 Define prompt printing function as
 .Fa f ,
 which is to return a string that contains the prompt.
+The 
+.Fa c
+argument indicates the start/stop literal prompt character.
+.Pp
+If a start/stop literal character is found in the prompt, itself
+is not printed, but characters after it are printed directly to the
+terminal without affecting the state of the current line.
+A subsequent second start/stop literal character ends this behavior.
+This is typically used to embed literal escape sequences that change the
+color/style of the terminal in the prompt.
+.Dv 0
+unsets it.
 .It Dv EL_REFRESH
 Re-display the current line on the next terminal line.
 .It Dv EL_RPROMPT , Fa "char *(*f)(EditLine *)"
@@ -437,10 +449,22 @@
 are supported, along with actual type of
 .Fa result :
 .Bl -tag -width 4n
-.It Dv EL_PROMPT , Fa "char *(*f)(EditLine *)"
-Return a pointer to the function that displays the prompt.
-.It Dv EL_RPROMPT , Fa "char *(*f)(EditLine *)"
-Return a pointer to the function that displays the rightside prompt.
+.It Dv EL_PROMPT , Fa "char *(*f)(EditLine *)" , Fa "char *c"
+Return a pointer to the function that displays the prompt in
+.Fa f .
+If
+.Fa c
+is not
+.Dv NULL ,
+return the start/stop literal prompt character in it.
+.It Dv EL_RPROMPT , Fa "char *(*f)(EditLine *)" , Fa "char *c"
+Return a pointer to the function that displays the prompt in
+.Fa f .
+If
+.Fa c
+is not
+.Dv NULL ,
+return the start/stop literal prompt character in it.
 .It Dv EL_EDITOR , Fa "const char *"
 Return the name of the editor, which will be one of
 .Dq emacs

Index: src/lib/libedit/el.c
diff -u src/lib/libedit/el.c:1.50 src/lib/libedit/el.c:1.51
--- src/lib/libedit/el.c:1.50	Fri Feb 20 19:05:23 2009
+++ src/lib/libedit/el.c	Tue Mar 31 13:38:27 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: el.c,v 1.50 2009/02/21 00:05:23 christos Exp $	*/
+/*	$NetBSD: el.c,v 1.51 2009/03/31 17:38:27 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)el.c	8.2 (Berkeley) 1/3/94";
 #else
-__RCSID("$NetBSD: el.c,v 1.50 2009/02/21 00:05:23 christos Exp $");
+__RCSID("$NetBSD: el.c,v 1.51 2009/03/31 17:38:27 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -155,9 +155,13 @@
 
 	switch (op) {
 	case EL_PROMPT:
-	case EL_RPROMPT:
-		rv = prompt_set(el, va_arg(ap, el_pfunc_t), op);
+	case EL_RPROMPT: {
+		el_pfunc_t p = va_arg(ap, el_pfunc_t);
+		char c = va_arg(ap, int);
+
+		rv = prompt_set(el, p, c, op);
 		break;
+	}
 
 	case EL_TERMINAL:
 		rv = term_set(el, va_arg(ap, char *));
@@ -340,9 +344,13 @@
 
 	switch (op) {
 	case EL_PROMPT:
-	case EL_RPROMPT:
-		rv = prompt_get(el, va_arg(ap, el_pfunc_t *), op);
+	case EL_RPROMPT: {
+		el_pfunc_t *p = va_arg(ap, el_pfunc_t *);
+		char *c = va_arg(ap, char *);
+
+		rv = prompt_get(el, p, c, op);
 		break;
+	}
 
 	case EL_EDITOR:
 		rv = map_get_editor(el, va_arg(ap, const char **));
Index: src/lib/libedit/term.c
diff -u src/lib/libedit/term.c:1.50 src/lib/libedit/term.c:1.51
--- src/lib/libedit/term.c:1.50	Sun Feb 15 16:55:23 2009
+++ src/lib/libedit/term.c	Tue Mar 31 13:38:27 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: term.c,v 1.50 2009/02/15 21:55:23 christos Exp $	*/
+/*	$NetBSD: term.c,v 1.51 2009/03/31 17:38:27 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)term.c	8.2 (Berkeley) 4/30/95";
 #else
-__RCSID("$NetBSD: term.c,v 1.50 2009/02/15 21:55:23 christos Exp $");
+__RCSID("$NetBSD: term.c,v 1.51 2009/03/31 17:38:27 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -559,7 +559,7 @@
 				term_move_to_char(el, el->el_term.t_size.h - 1);
 				term_overwrite(el,
 				    &el->el_display[el->el_cursor.v][el->el_cursor.h],
-				    1);
+				    (size_t)1);
 				/* updates Cursor */
 				del--;
 			} else {
@@ -646,7 +646,7 @@
 				 */
 				term_overwrite(el,
 				    &el->el_display[el->el_cursor.v][el->el_cursor.h],
-				    where - el->el_cursor.h);
+				    (size_t)(where - el->el_cursor.h));
 
 			}
 		} else {	/* del < 0 := moving backward */
@@ -680,10 +680,10 @@
  *	Overstrike num characters
  */
 protected void
-term_overwrite(EditLine *el, const char *cp, int n)
+term_overwrite(EditLine *el, const char *cp, size_t n)
 {
-	if (n <= 0)
-		return;		/* catch bugs */
+	if (n == 0)
+		return;
 
 	if (n > el->el_term.t_size.h) {
 #ifdef DEBUG_SCREEN
@@ -692,6 +692,7 @@
 #endif /* DEBUG_SCREEN */
 		return;
 	}
+
 	do {
 		term__putc(el, *cp++);
 		el->el_cursor.h++;
@@ -784,7 +785,7 @@
 		if ((num > 1) || !GoodStr(T_ic)) {
 				/* if ic would be more expensive */
 			term_tputs(el, tgoto(Str(T_IC), num, num), num);
-			term_overwrite(el, cp, num);
+			term_overwrite(el, cp, (size_t)num);
 				/* this updates el_cursor.h */
 			return;
 		}
@@ -1289,9 +1290,9 @@
 term_writec(EditLine *el, int c)
 {
 	char buf[8];
-	int cnt = key__decode_char(buf, sizeof(buf), 0, c);
+	size_t cnt = key__decode_char(buf, sizeof(buf), 0, c);
 	buf[cnt] = '\0';
-	term_overwrite(el, buf, cnt);
+	term_overwrite(el, buf, (size_t)cnt);
 	term__flush(el);
 }
 

Index: src/lib/libedit/histedit.h
diff -u src/lib/libedit/histedit.h:1.38 src/lib/libedit/histedit.h:1.39
--- src/lib/libedit/histedit.h:1.38	Fri Feb 20 19:05:23 2009
+++ src/lib/libedit/histedit.h	Tue Mar 31 13:38:27 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: histedit.h,v 1.38 2009/02/21 00:05:23 christos Exp $	*/
+/*	$NetBSD: histedit.h,v 1.39 2009/03/31 17:38:27 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -115,7 +115,7 @@
 /*
  * el_set/el_get parameters
  */
-#define	EL_PROMPT	0	/* , el_pfunc_t);		*/
+#define	EL_PROMPT	0	/* , el_pfunc_t, char);		*/
 #define	EL_TERMINAL	1	/* , const char *);		*/
 #define	EL_EDITOR	2	/* , const char *);		*/
 #define	EL_SIGNAL	3	/* , int);			*/
@@ -128,7 +128,7 @@
 				/* , el_func_t);		*/
 #define	EL_HIST		10	/* , hist_fun_t, const char *);	*/
 #define	EL_EDITMODE	11	/* , int);			*/
-#define	EL_RPROMPT	12	/* , el_pfunc_t);		*/
+#define	EL_RPROMPT	12	/* , el_pfunc_t, char);		*/
 #define	EL_GETCFN	13	/* , el_rfunc_t);		*/
 #define	EL_CLIENTDATA	14	/* , void *);			*/
 #define	EL_UNBUFFERED	15	/* , int);			*/

Index: src/lib/libedit/prompt.c
diff -u src/lib/libedit/prompt.c:1.13 src/lib/libedit/prompt.c:1.14
--- src/lib/libedit/prompt.c:1.13	Fri Feb 20 19:05:23 2009
+++ src/lib/libedit/prompt.c	Tue Mar 31 13:38:27 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: prompt.c,v 1.13 2009/02/21 00:05:23 christos Exp $	*/
+/*	$NetBSD: prompt.c,v 1.14 2009/03/31 17:38:27 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)prompt.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: prompt.c,v 1.13 2009/02/21 00:05:23 christos Exp $");
+__RCSID("$NetBSD: prompt.c,v 1.14 2009/03/31 17:38:27 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -87,14 +87,23 @@
 {
 	el_prompt_t *elp;
 	char *p;
+	int ignore = 0;
 
 	if (op == EL_PROMPT)
 		elp = &el->el_prompt;
 	else
 		elp = &el->el_rprompt;
 	p = (elp->p_func) (el);
-	while (*p)
-		re_putc(el, *p++, 1);
+	while (*p) {
+		if (elp->p_ignore == *p) {
+			ignore = !ignore;
+			continue;
+		}
+		if (ignore)
+			term__putc(el, *p++);
+		else
+			re_putc(el, *p++, 1);
+	}
 
 	elp->p_pos.v = el->el_refresh.r_cursor.v;
 	elp->p_pos.h = el->el_refresh.r_cursor.h;
@@ -111,10 +120,12 @@
 	el->el_prompt.p_func = prompt_default;
 	el->el_prompt.p_pos.v = 0;
 	el->el_prompt.p_pos.h = 0;
+	el->el_prompt.p_ignore = '\0';
 	el->el_rprompt.p_func = prompt_default_r;
 	el->el_rprompt.p_pos.v = 0;
 	el->el_rprompt.p_pos.h = 0;
-	return (0);
+	el->el_rprompt.p_ignore = '\0';
+	return 0;
 }
 
 
@@ -132,7 +143,7 @@
  *	Install a prompt printing function
  */
 protected int
-prompt_set(EditLine *el, el_pfunc_t prf, int op)
+prompt_set(EditLine *el, el_pfunc_t prf, char c, int op)
 {
 	el_prompt_t *p;
 
@@ -140,6 +151,7 @@
 		p = &el->el_prompt;
 	else
 		p = &el->el_rprompt;
+
 	if (prf == NULL) {
 		if (op == EL_PROMPT)
 			p->p_func = prompt_default;
@@ -147,9 +159,13 @@
 			p->p_func = prompt_default_r;
 	} else
 		p->p_func = prf;
+
+	p->p_ignore = c;
+
 	p->p_pos.v = 0;
 	p->p_pos.h = 0;
-	return (0);
+
+	return 0;
 }
 
 
@@ -157,14 +173,22 @@
  *	Retrieve the prompt printing function
  */
 protected int
-prompt_get(EditLine *el, el_pfunc_t *prf, int op)
+prompt_get(EditLine *el, el_pfunc_t *prf, char *c, int op)
 {
+	el_prompt_t *p;
 
 	if (prf == NULL)
-		return (-1);
+		return -1;
+
 	if (op == EL_PROMPT)
-		*prf = el->el_prompt.p_func;
+		p = &el->el_prompt;
 	else
-		*prf = el->el_rprompt.p_func;
-	return (0);
+		p = &el->el_rprompt;
+
+	*prf = el->el_rprompt.p_func;
+
+	if (c)
+		*c = p->p_ignore;
+
+	return 0;
 }

Index: src/lib/libedit/prompt.h
diff -u src/lib/libedit/prompt.h:1.8 src/lib/libedit/prompt.h:1.9
--- src/lib/libedit/prompt.h:1.8	Fri Feb 20 19:05:23 2009
+++ src/lib/libedit/prompt.h	Tue Mar 31 13:38:27 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: prompt.h,v 1.8 2009/02/21 00:05:23 christos Exp $	*/
+/*	$NetBSD: prompt.h,v 1.9 2009/03/31 17:38:27 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -45,13 +45,14 @@
 typedef char * (*el_pfunc_t)(EditLine*);
 
 typedef struct el_prompt_t {
-	el_pfunc_t	p_func;	/* Function to return the prompt	*/
-	coord_t		p_pos;	/* position in the line after prompt	*/
+	el_pfunc_t	p_func;		/* Function to return the prompt */
+	coord_t		p_pos;		/* position in the line after prompt */
+	char		p_ignore;	/* character to start/end literal */
 } el_prompt_t;
 
 protected void	prompt_print(EditLine *, int);
-protected int	prompt_set(EditLine *, el_pfunc_t, int);
-protected int	prompt_get(EditLine *, el_pfunc_t *, int);
+protected int	prompt_set(EditLine *, el_pfunc_t, char, int);
+protected int	prompt_get(EditLine *, el_pfunc_t *, char *, int);
 protected int	prompt_init(EditLine *);
 protected void	prompt_end(EditLine *);
 

Index: src/lib/libedit/refresh.c
diff -u src/lib/libedit/refresh.c:1.29 src/lib/libedit/refresh.c:1.30
--- src/lib/libedit/refresh.c:1.29	Sun Feb 15 16:55:23 2009
+++ src/lib/libedit/refresh.c	Tue Mar 31 13:38:27 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: refresh.c,v 1.29 2009/02/15 21:55:23 christos Exp $	*/
+/*	$NetBSD: refresh.c,v 1.30 2009/03/31 17:38:27 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)refresh.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: refresh.c,v 1.29 2009/02/15 21:55:23 christos Exp $");
+__RCSID("$NetBSD: refresh.c,v 1.30 2009/03/31 17:38:27 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -300,7 +300,7 @@
 			term_move_to_char(el, 0);
 			term_clear_EOL(el, (int) strlen(el->el_display[i]));
 #ifdef DEBUG_REFRESH
-			term_overwrite(el, "C\b", 2);
+			term_overwrite(el, "C\b", (size_t)2);
 #endif /* DEBUG_REFRESH */
 			el->el_display[i][0] = '\0';
 		}
@@ -477,6 +477,7 @@
 	char *ofd, *ols, *oe, *nfd, *nls, *ne;
 	char *osb, *ose, *nsb, *nse;
 	int fx, sx;
+	size_t len;
 
 	/*
          * find first diff
@@ -761,14 +762,14 @@
 		         * write (nsb-nfd) - fx chars of new starting at
 		         * (nfd + fx)
 			 */
-			term_overwrite(el, (nfd + fx),
-			    (int)((nsb - nfd) - fx));
-			re__strncopy(ofd + fx, nfd + fx,
-			    (size_t) ((nsb - nfd) - fx));
+			len = (size_t) ((nsb - nfd) - fx);
+			term_overwrite(el, (nfd + fx), len);
+			re__strncopy(ofd + fx, nfd + fx, len);
 		} else {
 			ELRE_DEBUG(1, (__F, "without anything to save\r\n"));
-			term_overwrite(el, nfd, (int)(nsb - nfd));
-			re__strncopy(ofd, nfd, (size_t) (nsb - nfd));
+			len = (size_t)(nsb - nfd);
+			term_overwrite(el, nfd, len);
+			re__strncopy(ofd, nfd, len);
 			/*
 		         * Done
 		         */
@@ -800,8 +801,9 @@
 			/*
 		         * write (nsb-nfd) chars of new starting at nfd
 		         */
-			term_overwrite(el, nfd, (int)(nsb - nfd));
-			re__strncopy(ofd, nfd, (size_t) (nsb - nfd));
+			len = (size_t) (nsb - nfd);
+			term_overwrite(el, nfd, len);
+			re__strncopy(ofd, nfd, len);
 
 		} else {
 			ELRE_DEBUG(1, (__F,
@@ -809,7 +811,7 @@
 			/*
 		         * write (nsb-nfd) chars of new starting at nfd
 		         */
-			term_overwrite(el, nfd, (int)(nsb - nfd));
+			term_overwrite(el, nfd, (size_t)(nsb - nfd));
 			re_clear_eol(el, fx, sx,
 			    (int)((oe - old) - (ne - new)));
 			/*
@@ -847,11 +849,11 @@
 			/*
 		         * write (nls-nse) chars of new starting at nse
 		         */
-			term_overwrite(el, nse, (int)(nls - nse));
+			term_overwrite(el, nse, (size_t)(nls - nse));
 		} else {
 			ELRE_DEBUG(1, (__F,
 			    "but with nothing left to save\r\n"));
-			term_overwrite(el, nse, (int)(nls - nse));
+			term_overwrite(el, nse, (size_t)(nls - nse));
 			re_clear_eol(el, fx, sx,
 			    (int)((oe - old) - (ne - new)));
 		}
@@ -889,14 +891,14 @@
 		         * write (nsb-nfd) - fx chars of new starting at
 		         * (nfd + fx)
 			 */
-			term_overwrite(el, (nfd + fx),
-			    (int)((nsb - nfd) - fx));
-			re__strncopy(ofd + fx, nfd + fx,
-			    (size_t) ((nsb - nfd) - fx));
+			len = (size_t) ((nsb - nfd) - fx);
+			term_overwrite(el, (nfd + fx), len);
+			re__strncopy(ofd + fx, nfd + fx, len);
 		} else {
 			ELRE_DEBUG(1, (__F, "without anything to save\r\n"));
-			term_overwrite(el, nfd, (int)(nsb - nfd));
-			re__strncopy(ofd, nfd, (size_t) (nsb - nfd));
+			len = (size_t) (nsb - nfd);
+			term_overwrite(el, nfd, len);
+			re__strncopy(ofd, nfd, len);
 		}
 	}
 	/*
@@ -919,10 +921,10 @@
 			 * (nse + sx)
 		         */
 			term_overwrite(el, (nse + sx),
-			    (int)((nls - nse) - sx));
+			    (size_t)((nls - nse) - sx));
 		} else {
 			ELRE_DEBUG(1, (__F, "without anything to save\r\n"));
-			term_overwrite(el, nse, (int)(nls - nse));
+			term_overwrite(el, nse, (size_t)(nls - nse));
 
 			/*
 	                 * No need to do a clear-to-end here because we were

Index: src/lib/libedit/term.h
diff -u src/lib/libedit/term.h:1.19 src/lib/libedit/term.h:1.20
--- src/lib/libedit/term.h:1.19	Wed Sep 10 11:45:37 2008
+++ src/lib/libedit/term.h	Tue Mar 31 13:38:27 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: term.h,v 1.19 2008/09/10 15:45:37 christos Exp $	*/
+/*	$NetBSD: term.h,v 1.20 2009/03/31 17:38:27 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -84,7 +84,7 @@
 protected void	term_move_to_line(EditLine *, int);
 protected void	term_move_to_char(EditLine *, int);
 protected void	term_clear_EOL(EditLine *, int);
-protected void	term_overwrite(EditLine *, const char *, int);
+protected void	term_overwrite(EditLine *, const char *, size_t);
 protected void	term_insertwrite(EditLine *, char *, int);
 protected void	term_deletechars(EditLine *, int);
 protected void	term_clear_screen(EditLine *);

Index: src/lib/libedit/TEST/tc1.c
diff -u src/lib/libedit/TEST/tc1.c:1.1 src/lib/libedit/TEST/tc1.c:1.2
--- src/lib/libedit/TEST/tc1.c:1.1	Thu Aug 31 16:20:38 2006
+++ src/lib/libedit/TEST/tc1.c	Tue Mar 31 13:38:27 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: tc1.c,v 1.1 2006/08/31 20:20:38 rpaulo Exp $	*/
+/*	$NetBSD: tc1.c,v 1.2 2009/03/31 17:38:27 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -42,7 +42,7 @@
 #if 0
 static char sccsid[] = "@(#)test.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: tc1.c,v 1.1 2006/08/31 20:20:38 rpaulo Exp $");
+__RCSID("$NetBSD: tc1.c,v 1.2 2009/03/31 17:38:27 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -71,7 +71,7 @@
 static char *
 prompt(EditLine *el)
 {
-	static char a[] = "Edit$ ";
+	static char a[] = "\1\e[7m\1Edit$\1\e[0m\1 ";
 	static char b[] = "Edit> ";
 
 	return (continuation ? b : a);
@@ -146,7 +146,7 @@
 
 	el_set(el, EL_EDITOR, "vi");	/* Default editor is vi		*/
 	el_set(el, EL_SIGNAL, 1);	/* Handle signals gracefully	*/
-	el_set(el, EL_PROMPT, prompt);	/* Set the prompt function	*/
+	el_set(el, EL_PROMPT, prompt, '\1');/* Set the prompt function	*/
 
 			/* Tell editline to use this history interface	*/
 	el_set(el, EL_HIST, history, hist);

Reply via email to