Sync OpenBSD patchset 331:

New option, set-titles-string, to allow the window title to be specified (as
for status-left/right) if set-titles is on. Also only update the title when the
status line is being redrawn.
This commit is contained in:
Tiago Cunha 2009-09-19 18:53:01 +00:00
parent a2e03ce3cb
commit 23d7ed3187
4 changed files with 38 additions and 18 deletions

View File

@ -1,4 +1,4 @@
/* $Id: cmd-set-option.c,v 1.78 2009-09-02 01:02:44 tcunha Exp $ */
/* $Id: cmd-set-option.c,v 1.79 2009-09-19 18:53:01 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -69,6 +69,7 @@ const struct set_option_entry set_option_table[] = {
{ "repeat-time", SET_OPTION_NUMBER, 0, SHRT_MAX, NULL },
{ "set-remain-on-exit", SET_OPTION_FLAG, 0, 0, NULL },
{ "set-titles", SET_OPTION_FLAG, 0, 0, NULL },
{ "set-titles-string", SET_OPTION_STRING, 0, 0, NULL },
{ "status", SET_OPTION_FLAG, 0, 0, NULL },
{ "status-attr", SET_OPTION_ATTRIBUTES, 0, 0, NULL },
{ "status-bg", SET_OPTION_COLOUR, 0, 0, NULL },

View File

@ -1,4 +1,4 @@
/* $Id: server.c,v 1.188 2009-09-15 23:52:30 tcunha Exp $ */
/* $Id: server.c,v 1.189 2009-09-19 18:53:01 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -65,6 +65,7 @@ void server_clean_dead(void);
void server_lost_client(struct client *);
void server_check_window(struct window *);
void server_check_redraw(struct client *);
void server_set_title(struct client *);
void server_redraw_locked(struct client *);
void server_check_timers(struct client *);
void server_second_timers(void);
@ -519,7 +520,6 @@ server_check_redraw(struct client *c)
{
struct session *s;
struct window_pane *wp;
char title[512];
int flags, redraw;
if (c == NULL || c->session == NULL)
@ -529,19 +529,10 @@ server_check_redraw(struct client *c)
flags = c->tty.flags & TTY_FREEZE;
c->tty.flags &= ~TTY_FREEZE;
if (options_get_number(&s->options, "set-titles")) {
xsnprintf(title, sizeof title, "%s:%u:%s - \"%s\"",
s->name, s->curw->idx, s->curw->window->name,
s->curw->window->active->screen->title);
if (c->title == NULL || strcmp(title, c->title) != 0) {
if (c->title != NULL)
xfree(c->title);
c->title = xstrdup(title);
tty_set_title(&c->tty, c->title);
}
}
if (c->flags & (CLIENT_REDRAW|CLIENT_STATUS)) {
if (options_get_number(&s->options, "set-titles"))
server_set_title(c);
if (c->message_string != NULL)
redraw = status_message_redraw(c);
else if (c->prompt_string != NULL)
@ -573,6 +564,26 @@ server_check_redraw(struct client *c)
c->flags &= ~(CLIENT_REDRAW|CLIENT_STATUS);
}
/* Set client title. */
void
server_set_title(struct client *c)
{
struct session *s = c->session;
const char *template;
char *title;
template = options_get_string(&s->options, "set-titles-string");
title = status_replace(c->session, template, time(NULL));
if (c->title == NULL || strcmp(title, c->title) != 0) {
if (c->title != NULL)
xfree(c->title);
c->title = xstrdup(title);
tty_set_title(&c->tty, c->title);
}
xfree(title);
}
/* Redraw client when locked. */
void
server_redraw_locked(struct client *c)

11
tmux.1
View File

@ -1,4 +1,4 @@
.\" $Id: tmux.1,v 1.167 2009-09-11 14:13:52 tcunha Exp $
.\" $Id: tmux.1,v 1.168 2009-09-19 18:53:01 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: September 10 2009 $
.Dd $Mdocdate: September 18 2009 $
.Dt TMUX 1
.Os
.Sh NAME
@ -1287,6 +1287,13 @@ This option is off by default.
Note that elinks
will only attempt to set the window title if the STY environment
variable is set.
.It Ic set-titles-string Ar string
String used to set the window title if
.Ic set-titles
is on.
Character sequences are replaced as for the
.Ic status-left
option.
.It Xo Ic status
.Op Ic on | off
.Xc

3
tmux.c
View File

@ -1,4 +1,4 @@
/* $Id: tmux.c,v 1.171 2009-09-04 20:37:40 tcunha Exp $ */
/* $Id: tmux.c,v 1.172 2009-09-19 18:53:01 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -422,6 +422,7 @@ main(int argc, char **argv)
options_set_number(so, "repeat-time", 500);
options_set_number(so, "set-remain-on-exit", 0);
options_set_number(so, "set-titles", 0);
options_set_string(so, "set-titles-string", "#S:#I:#W - \"#T\"");
options_set_number(so, "status", 1);
options_set_number(so, "status-attr", 0);
options_set_number(so, "status-bg", 2);