version 1.132, 2017/05/03 05:53:34 |
version 1.133, 2017/05/05 11:59:47 |
|
|
static char *format_job_get(struct format_tree *, const char *); |
static char *format_job_get(struct format_tree *, const char *); |
static void format_job_timer(int, short, void *); |
static void format_job_timer(int, short, void *); |
|
|
static void format_cb_host(struct format_tree *, struct format_entry *); |
|
static void format_cb_host_short(struct format_tree *, |
|
struct format_entry *); |
|
static void format_cb_pid(struct format_tree *, struct format_entry *); |
|
static void format_cb_session_alerts(struct format_tree *, |
|
struct format_entry *); |
|
static void format_cb_window_layout(struct format_tree *, |
|
struct format_entry *); |
|
static void format_cb_window_visible_layout(struct format_tree *, |
|
struct format_entry *); |
|
static void format_cb_start_command(struct format_tree *, |
|
struct format_entry *); |
|
static void format_cb_current_command(struct format_tree *, |
|
struct format_entry *); |
|
static void format_cb_history_bytes(struct format_tree *, |
|
struct format_entry *); |
|
static void format_cb_pane_tabs(struct format_tree *, |
|
struct format_entry *); |
|
|
|
static char *format_find(struct format_tree *, const char *, int); |
static char *format_find(struct format_tree *, const char *, int); |
static void format_add_cb(struct format_tree *, const char *, format_cb); |
static void format_add_cb(struct format_tree *, const char *, format_cb); |
static void format_add_tv(struct format_tree *, const char *, |
static void format_add_tv(struct format_tree *, const char *, |
|
|
/* Format entry tree. */ |
/* Format entry tree. */ |
struct format_tree { |
struct format_tree { |
struct window *w; |
struct window *w; |
|
struct winlink *wl; |
struct session *s; |
struct session *s; |
struct window_pane *wp; |
struct window_pane *wp; |
|
|
|
|
{ |
{ |
struct session *s = ft->s; |
struct session *s = ft->s; |
struct winlink *wl; |
struct winlink *wl; |
char alerts[256], tmp[16]; |
char alerts[1024], tmp[16]; |
|
|
if (s == NULL) |
if (s == NULL) |
return; |
return; |
|
|
fe->value = xstrdup(alerts); |
fe->value = xstrdup(alerts); |
} |
} |
|
|
|
/* Callback for session_stack. */ |
|
static void |
|
format_cb_session_stack(struct format_tree *ft, struct format_entry *fe) |
|
{ |
|
struct session *s = ft->s; |
|
struct winlink *wl; |
|
char result[1024], tmp[16]; |
|
|
|
if (s == NULL) |
|
return; |
|
|
|
xsnprintf(result, sizeof result, "%u", s->curw->idx); |
|
TAILQ_FOREACH(wl, &s->lastw, sentry) { |
|
xsnprintf(tmp, sizeof tmp, "%u", wl->idx); |
|
|
|
if (*result != '\0') |
|
strlcat(result, ",", sizeof result); |
|
strlcat(result, tmp, sizeof result); |
|
} |
|
fe->value = xstrdup(result); |
|
} |
|
|
|
/* Callback for window_stack_index. */ |
|
static void |
|
format_cb_window_stack_index(struct format_tree *ft, struct format_entry *fe) |
|
{ |
|
struct session *s = ft->wl->session; |
|
struct winlink *wl; |
|
u_int idx; |
|
|
|
idx = 0; |
|
TAILQ_FOREACH(wl, &s->lastw, sentry) { |
|
idx++; |
|
if (wl == ft->wl) |
|
break; |
|
} |
|
if (wl != NULL) |
|
xasprintf(&fe->value, "%u", idx); |
|
else |
|
fe->value = xstrdup("0"); |
|
} |
|
|
/* Callback for window_layout. */ |
/* Callback for window_layout. */ |
static void |
static void |
format_cb_window_layout(struct format_tree *ft, struct format_entry *fe) |
format_cb_window_layout(struct format_tree *ft, struct format_entry *fe) |
|
|
format_add(ft, "session_many_attached", "%d", s->attached > 1); |
format_add(ft, "session_many_attached", "%d", s->attached > 1); |
|
|
format_add_cb(ft, "session_alerts", format_cb_session_alerts); |
format_add_cb(ft, "session_alerts", format_cb_session_alerts); |
|
format_add_cb(ft, "session_stack", format_cb_session_stack); |
} |
} |
|
|
/* Set default format keys for a client. */ |
/* Set default format keys for a client. */ |
|
|
|
|
if (ft->w == NULL) |
if (ft->w == NULL) |
ft->w = wl->window; |
ft->w = wl->window; |
|
ft->wl = wl; |
|
|
format_defaults_window(ft, w); |
format_defaults_window(ft, w); |
|
|
format_add(ft, "window_index", "%d", wl->idx); |
format_add(ft, "window_index", "%d", wl->idx); |
|
format_add_cb(ft, "window_stack_index", format_cb_window_stack_index); |
format_add(ft, "window_flags", "%s", window_printable_flags(wl)); |
format_add(ft, "window_flags", "%s", window_printable_flags(wl)); |
format_add(ft, "window_active", "%d", wl == s->curw); |
format_add(ft, "window_active", "%d", wl == s->curw); |
|
|