=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/format.c,v retrieving revision 1.56 retrieving revision 1.57 diff -c -r1.56 -r1.57 *** src/usr.bin/tmux/format.c 2015/01/11 04:14:40 1.56 --- src/usr.bin/tmux/format.c 2015/02/05 10:29:43 1.57 *************** *** 1,4 **** ! /* $OpenBSD: format.c,v 1.56 2015/01/11 04:14:40 deraadt Exp $ */ /* * Copyright (c) 2011 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: format.c,v 1.57 2015/02/05 10:29:43 nicm Exp $ */ /* * Copyright (c) 2011 Nicholas Marriott *************** *** 38,45 **** int format_replace(struct format_tree *, const char *, size_t, char **, size_t *, size_t *); char *format_get_command(struct window_pane *); - void format_window_pane_tabs(struct format_tree *, struct window_pane *); /* Entry in format tree. */ struct format_entry { char *key; --- 38,50 ---- int format_replace(struct format_tree *, const char *, size_t, char **, size_t *, size_t *); char *format_get_command(struct window_pane *); + void format_defaults_pane_tabs(struct format_tree *, struct window_pane *); + void format_defaults_session(struct format_tree *, struct session *); + void format_defaults_client(struct format_tree *, struct client *); + void format_defaults_winlink(struct format_tree *, struct session *, + struct winlink *); + /* Entry in format tree. */ struct format_entry { char *key; *************** *** 418,426 **** return (out); } /* Set default format keys for a session. */ void ! format_session(struct format_tree *ft, struct session *s) { struct session_group *sg; char *tim; --- 423,453 ---- return (out); } + /* Set defaults for any of arguments that are not NULL. */ + void + format_defaults(struct format_tree *ft, struct client *c, struct session *s, + struct winlink *wl, struct window_pane *wp) + { + if (s == NULL && c != NULL) + s = c->session; + if (wl == NULL && s != NULL) + wl = s->curw; + if (wp == NULL && wl != NULL) + wp = wl->window->active; + + if (c != NULL) + format_defaults_client(ft, c); + if (s != NULL) + format_defaults_session(ft, s); + if (s != NULL && wl != NULL) + format_defaults_winlink(ft, s, wl); + if (wp != NULL) + format_defaults_pane(ft, wp); + } + /* Set default format keys for a session. */ void ! format_defaults_session(struct format_tree *ft, struct session *s) { struct session_group *sg; char *tim; *************** *** 451,457 **** /* Set default format keys for a client. */ void ! format_client(struct format_tree *ft, struct client *c) { char *tim; time_t t; --- 478,484 ---- /* Set default format keys for a client. */ void ! format_defaults_client(struct format_tree *ft, struct client *c) { char *tim; time_t t; *************** *** 501,507 **** /* Set default format keys for a window. */ void ! format_window(struct format_tree *ft, struct window *w) { char *layout; --- 528,534 ---- /* Set default format keys for a window. */ void ! format_defaults_window(struct format_tree *ft, struct window *w) { char *layout; *************** *** 523,529 **** /* Set default format keys for a winlink. */ void ! format_winlink(struct format_tree *ft, struct session *s, struct winlink *wl) { struct window *w = wl->window; char *flags; --- 550,557 ---- /* Set default format keys for a winlink. */ void ! format_defaults_winlink(struct format_tree *ft, struct session *s, ! struct winlink *wl) { struct window *w = wl->window; char *flags; *************** *** 533,539 **** flags = window_printable_flags(s, wl); ! format_window(ft, w); format_add(ft, "window_index", "%d", wl->idx); format_add(ft, "window_flags", "%s", flags); --- 561,567 ---- flags = window_printable_flags(s, wl); ! format_defaults_window(ft, w); format_add(ft, "window_index", "%d", wl->idx); format_add(ft, "window_flags", "%s", flags); *************** *** 553,559 **** /* Add window pane tabs. */ void ! format_window_pane_tabs(struct format_tree *ft, struct window_pane *wp) { struct evbuffer *buffer; u_int i; --- 581,587 ---- /* Add window pane tabs. */ void ! format_defaults_pane_tabs(struct format_tree *ft, struct window_pane *wp) { struct evbuffer *buffer; u_int i; *************** *** 575,581 **** /* Set default format keys for a window pane. */ void ! format_window_pane(struct format_tree *ft, struct window_pane *wp) { struct grid *gd = wp->base.grid; struct grid_line *gl; --- 603,609 ---- /* Set default format keys for a window pane. */ void ! format_defaults_pane(struct format_tree *ft, struct window_pane *wp) { struct grid *gd = wp->base.grid; struct grid_line *gl; *************** *** 665,676 **** format_add(ft, "mouse_utf8_flag", "%d", !!(wp->base.mode & MODE_MOUSE_UTF8)); ! format_window_pane_tabs(ft, wp); } /* Set default format keys for paste buffer. */ void ! format_paste_buffer(struct format_tree *ft, struct paste_buffer *pb, int utf8flag) { char *s; --- 693,704 ---- format_add(ft, "mouse_utf8_flag", "%d", !!(wp->base.mode & MODE_MOUSE_UTF8)); ! format_defaults_pane_tabs(ft, wp); } /* Set default format keys for paste buffer. */ void ! format_defaults_paste_buffer(struct format_tree *ft, struct paste_buffer *pb, int utf8flag) { char *s;