aboutsummaryrefslogtreecommitdiff
path: root/format.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2018-09-26 18:41:18 +0100
committerNicholas Marriott <nicholas.marriott@gmail.com>2018-09-26 18:41:18 +0100
commitebaf54251a6e3a1b366531155ab59dbd286a4a3a (patch)
tree596067245f03b7a10bf4500cc10adc7863f46894 /format.c
parentb74b047730226a64a64b1e1dd1cc1d7f3305ea53 (diff)
downloadrtmux-ebaf54251a6e3a1b366531155ab59dbd286a4a3a.tar.gz
rtmux-ebaf54251a6e3a1b366531155ab59dbd286a4a3a.tar.bz2
rtmux-ebaf54251a6e3a1b366531155ab59dbd286a4a3a.zip
Add formats for when window is larger than client, and show offset in
status-right by default when larger.
Diffstat (limited to 'format.c')
-rw-r--r--format.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/format.c b/format.c
index e3552cba..5cdce67c 100644
--- a/format.c
+++ b/format.c
@@ -106,9 +106,10 @@ struct format_entry {
/* Format entry tree. */
struct format_tree {
- struct window *w;
- struct winlink *wl;
+ struct client *c;
struct session *s;
+ struct winlink *wl;
+ struct window *w;
struct window_pane *wp;
struct client *client;
@@ -1395,6 +1396,7 @@ format_defaults_client(struct format_tree *ft, struct client *c)
if (ft->s == NULL)
ft->s = c->session;
+ ft->c = c;
format_add(ft, "client_name", "%s", c->name);
format_add(ft, "client_pid", "%ld", (long) c->pid);
@@ -1463,8 +1465,11 @@ format_defaults_window(struct format_tree *ft, struct window *w)
static void
format_defaults_winlink(struct format_tree *ft, struct winlink *wl)
{
+ struct client *c = ft->c;
struct session *s = wl->session;
struct window *w = wl->window;
+ int flag;
+ u_int ox, oy, sx, sy;
if (ft->w == NULL)
ft->w = wl->window;
@@ -1472,6 +1477,15 @@ format_defaults_winlink(struct format_tree *ft, struct winlink *wl)
format_defaults_window(ft, w);
+ if (c != NULL) {
+ flag = tty_window_offset(&c->tty, &ox, &oy, &sx, &sy);
+ format_add(ft, "window_bigger", "%d", flag);
+ if (flag) {
+ format_add(ft, "window_offset_x", "%u", ox);
+ format_add(ft, "window_offset_y", "%u", oy);
+ }
+ }
+
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));