=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/format.c,v retrieving revision 1.167 retrieving revision 1.168 diff -c -r1.167 -r1.168 *** src/usr.bin/tmux/format.c 2019/03/07 20:24:21 1.167 --- src/usr.bin/tmux/format.c 2019/03/12 11:16:50 1.168 *************** *** 1,4 **** ! /* $OpenBSD: format.c,v 1.167 2019/03/07 20:24:21 nicm Exp $ */ /* * Copyright (c) 2011 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: format.c,v 1.168 2019/03/12 11:16:50 nicm Exp $ */ /* * Copyright (c) 2011 Nicholas Marriott *************** *** 617,622 **** --- 617,638 ---- 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) *************** *** 1495,1504 **** 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; if (ft->w == NULL) ft->w = w; --- 1511,1521 ---- 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_mode_entry *wme; if (ft->w == NULL) ft->w = w; *************** *** 1533,1541 **** 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); format_add(ft, "pane_synchronized", "%d", !!options_get_number(w->options, "synchronize-panes")); --- 1550,1562 ---- 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); ! 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")); *************** *** 1551,1559 **** format_add(ft, "cursor_y", "%u", wp->base.cy); 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); --- 1572,1577 ----