summaryrefslogtreecommitdiffstats
path: root/format.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2019-03-12 12:02:42 +0000
committerThomas Adam <thomas@xteddy.org>2019-03-12 12:02:42 +0000
commit3ec05e940505f1d0b4e55413f949fdfaceddedde (patch)
tree843d754e76bb7386f39cb5743ab8de859e880ddd /format.c
parentf8a30e158821876e8c30d46ab2728bce739e35de (diff)
parent3f6bfbaf2babcc7f08f628a82ff31b0b52014e58 (diff)
Merge branch 'obsd-master'
Diffstat (limited to 'format.c')
-rw-r--r--format.c38
1 files changed, 28 insertions, 10 deletions
diff --git a/format.c b/format.c
index 29f8d47e..6b493841 100644
--- a/format.c
+++ b/format.c
@@ -632,6 +632,22 @@ format_cb_session_group_list(struct format_tree *ft, struct format_entry *fe)
evbuffer_free(buffer);
}
+/* Callback for pane_in_mode. */
+static void
+format_cb_pane_in_mode(struct format_tree *ft, struct format_entry *fe)
+{
+ struct window_pane *wp = ft->wp;
+ u_int n = 0;
+ struct window_mode_entry *wme;
+
+ if (wp == NULL)
+ return;
+
+ TAILQ_FOREACH(wme, &wp->modes, entry)
+ n++;
+ xasprintf(&fe->value, "%u", n);
+}
+
/* Merge a format tree. */
static void
format_merge(struct format_tree *ft, struct format_tree *from)
@@ -1511,10 +1527,11 @@ format_defaults_winlink(struct format_tree *ft, struct winlink *wl)
void
format_defaults_pane(struct format_tree *ft, struct window_pane *wp)
{
- struct window *w = wp->window;
- struct grid *gd = wp->base.grid;
- int status = wp->status;
- u_int idx;
+ struct window *w = wp->window;
+ struct grid *gd = wp->base.grid;
+ int status = wp->status;
+ u_int idx;
+ struct window_mode_entry *wme;
if (ft->w == NULL)
ft->w = w;
@@ -1549,9 +1566,13 @@ format_defaults_pane(struct format_tree *ft, struct window_pane *wp)
format_add(ft, "pane_at_right", "%d", wp->xoff + wp->sx == w->sx);
format_add(ft, "pane_at_bottom", "%d", wp->yoff + wp->sy == w->sy);
- format_add(ft, "pane_in_mode", "%d", wp->screen != &wp->base);
- if (wp->mode != NULL)
- format_add(ft, "pane_mode", "%s", wp->mode->mode->name);
+ wme = TAILQ_FIRST(&wp->modes);
+ if (wme != NULL) {
+ format_add(ft, "pane_mode", "%s", wme->mode->name);
+ if (wme->mode->formats != NULL)
+ wme->mode->formats(wme, ft);
+ }
+ format_add_cb(ft, "pane_in_mode", format_cb_pane_in_mode);
format_add(ft, "pane_synchronized", "%d",
!!options_get_number(w->options, "synchronize-panes"));
@@ -1569,9 +1590,6 @@ format_defaults_pane(struct format_tree *ft, struct window_pane *wp)
format_add(ft, "scroll_region_upper", "%u", wp->base.rupper);
format_add(ft, "scroll_region_lower", "%u", wp->base.rlower);
- if (wp->mode != NULL && wp->mode->mode->formats != NULL)
- wp->mode->mode->formats(wp->mode, ft);
-
format_add(ft, "alternate_on", "%d", wp->saved_grid ? 1 : 0);
format_add(ft, "alternate_saved_x", "%u", wp->saved_cx);
format_add(ft, "alternate_saved_y", "%u", wp->saved_cy);