diff --git a/cmd-display-message.c b/cmd-display-message.c index 9876fb19..70e398b3 100644 --- a/cmd-display-message.c +++ b/cmd-display-message.c @@ -1,4 +1,4 @@ -/* $Id: cmd-display-message.c,v 1.4 2009-11-14 17:56:39 tcunha Exp $ */ +/* $Id: cmd-display-message.c,v 1.5 2009-11-19 22:25:52 tcunha Exp $ */ /* * Copyright (c) 2009 Tiago Cunha <me@tiagocunha.org> @@ -55,7 +55,7 @@ cmd_display_message_exec(struct cmd *self, struct cmd_ctx *ctx) else template = data->arg; - msg = status_replace(c, template, time(NULL)); + msg = status_replace(c, template, time(NULL), 0); status_message_set(c, "%s", msg); xfree(msg); diff --git a/server-client.c b/server-client.c index 7605b775..2b603b01 100644 --- a/server-client.c +++ b/server-client.c @@ -1,4 +1,4 @@ -/* $Id: server-client.c,v 1.22 2009-11-19 22:20:04 tcunha Exp $ */ +/* $Id: server-client.c,v 1.23 2009-11-19 22:25:52 tcunha Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net> @@ -488,7 +488,7 @@ server_client_set_title(struct client *c) template = options_get_string(&s->options, "set-titles-string"); - title = status_replace(c, template, time(NULL)); + title = status_replace(c, template, time(NULL), 1); if (c->title == NULL || strcmp(title, c->title) != 0) { if (c->title != NULL) xfree(c->title); diff --git a/status.c b/status.c index ac3f2631..19da4ade 100644 --- a/status.c +++ b/status.c @@ -1,4 +1,4 @@ -/* $Id: status.c,v 1.129 2009-11-19 22:20:04 tcunha Exp $ */ +/* $Id: status.c,v 1.130 2009-11-19 22:25:52 tcunha Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -107,14 +107,14 @@ status_redraw(struct client *c) /* Work out the left and right strings. */ left = status_replace(c, options_get_string( - &s->options, "status-left"), c->status_timer.tv_sec); + &s->options, "status-left"), c->status_timer.tv_sec, 1); llen = options_get_number(&s->options, "status-left-length"); llen2 = screen_write_cstrlen(utf8flag, "%s", left); if (llen2 < llen) llen = llen2; right = status_replace(c, options_get_string( - &s->options, "status-right"), c->status_timer.tv_sec); + &s->options, "status-right"), c->status_timer.tv_sec, 1); rlen = options_get_number(&s->options, "status-right-length"); rlen2 = screen_write_cstrlen(utf8flag, "%s", right); if (rlen2 < rlen) @@ -319,7 +319,7 @@ out: } char * -status_replace(struct client *c, const char *fmt, time_t t) +status_replace(struct client *c, const char *fmt, time_t t, int run_jobs) { struct session *s = c->session; struct winlink *wl = s->curw; @@ -355,11 +355,25 @@ status_replace(struct client *c, const char *fmt, time_t t) ptr = NULL; switch (*iptr++) { case '(': - if (ptr == NULL) { - ptr = status_job(c, &iptr); - if (ptr == NULL) - break; - savedptr = ptr; + if (run_jobs) { + if (ptr == NULL) { + ptr = status_job(c, &iptr); + if (ptr == NULL) + break; + savedptr = ptr; + } + } else { + /* Don't run jobs. Copy to ). */ + *optr++ = '#'; + + iptr--; /* include [ */ + while (*iptr != ')' && *iptr != '\0') { + if (optr >= + out + (sizeof out) - 1) + break; + *optr++ = *iptr++; + } + break; } /* FALLTHROUGH */ case 'H': diff --git a/tmux.1 b/tmux.1 index 0713bdbb..38b11e2f 100644 --- a/tmux.1 +++ b/tmux.1 @@ -1,4 +1,4 @@ -.\" $Id: tmux.1,v 1.203 2009-11-19 22:23:27 tcunha Exp $ +.\" $Id: tmux.1,v 1.204 2009-11-19 22:25:52 tcunha Exp $ .\" .\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> .\" @@ -14,7 +14,7 @@ .\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING .\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: November 18 2009 $ +.Dd $Mdocdate: November 19 2009 $ .Dt TMUX 1 .Os .Sh NAME @@ -1992,10 +1992,11 @@ This command works only from inside .Op Ar message .Xc .D1 (alias: Ic display ) -Display a message (see the -.Ic status-left -option below) -in the status line. +Display a message in the status line. +The format of +.Ar message is as for +.Ic status-left , +with the exception that #() are not handled. .It Ic select-prompt Op Fl t Ar target-client Open a prompt inside .Ar target-client diff --git a/tmux.h b/tmux.h index a555d604..d9f6c621 100644 --- a/tmux.h +++ b/tmux.h @@ -1,4 +1,4 @@ -/* $Id: tmux.h,v 1.519 2009-11-19 22:23:27 tcunha Exp $ */ +/* $Id: tmux.h,v 1.520 2009-11-19 22:25:52 tcunha Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -1616,7 +1616,7 @@ void server_update_event(struct client *); /* status.c */ int status_redraw(struct client *); -char *status_replace(struct client *, const char *, time_t); +char *status_replace(struct client *, const char *, time_t, int); void printflike2 status_message_set(struct client *, const char *, ...); void status_message_clear(struct client *); int status_message_redraw(struct client *);