diff options
author | Tiago Cunha <tcunha@gmx.com> | 2010-12-22 15:23:59 +0000 |
---|---|---|
committer | Tiago Cunha <tcunha@gmx.com> | 2010-12-22 15:23:59 +0000 |
commit | d1bdc9a1614166aa8bee5163378d299a35c75a76 (patch) | |
tree | 6896b85327a90e0b5aabffad98ccf4377371fdfe | |
parent | cd92f44686b165ea77d13b1b93b2ff80eadfe53f (diff) | |
download | rtmux-d1bdc9a1614166aa8bee5163378d299a35c75a76.tar.gz rtmux-d1bdc9a1614166aa8bee5163378d299a35c75a76.tar.bz2 rtmux-d1bdc9a1614166aa8bee5163378d299a35c75a76.zip |
Sync OpenBSD patchset 799:
Add other-pane-height and other-pane-width options, allowing the width
or height of the smaller panes in the main-horizontal and main-vertical
layouts to be set. Mostly from David Goodlad.
-rw-r--r-- | cmd-set-option.c | 4 | ||||
-rw-r--r-- | layout-set.c | 30 | ||||
-rw-r--r-- | tmux.1 | 21 | ||||
-rw-r--r-- | tmux.c | 4 |
4 files changed, 51 insertions, 8 deletions
diff --git a/cmd-set-option.c b/cmd-set-option.c index 5aae6694..2d99552c 100644 --- a/cmd-set-option.c +++ b/cmd-set-option.c @@ -1,4 +1,4 @@ -/* $Id: cmd-set-option.c,v 1.101 2010-12-06 22:52:20 nicm Exp $ */ +/* $Id: cmd-set-option.c,v 1.102 2010-12-22 15:23:59 tcunha Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -159,6 +159,8 @@ const struct set_option_entry set_window_option_table[] = { { "monitor-activity", SET_OPTION_FLAG, 0, 0, NULL }, { "monitor-content", SET_OPTION_STRING, 0, 0, NULL }, { "monitor-silence",SET_OPTION_NUMBER, 0, INT_MAX, NULL}, + { "other-pane-height", SET_OPTION_NUMBER, 0, INT_MAX, NULL }, + { "other-pane-width", SET_OPTION_NUMBER, 0, INT_MAX, NULL }, { "remain-on-exit", SET_OPTION_FLAG, 0, 0, NULL }, { "synchronize-panes", SET_OPTION_FLAG, 0, 0, NULL }, { "utf8", SET_OPTION_FLAG, 0, 0, NULL }, diff --git a/layout-set.c b/layout-set.c index afd94cef..1a155db8 100644 --- a/layout-set.c +++ b/layout-set.c @@ -1,4 +1,4 @@ -/* $Id: layout-set.c,v 1.7 2010-12-07 20:23:21 micahcowan Exp $ */ +/* $Id: layout-set.c,v 1.8 2010-12-22 15:23:59 tcunha Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net> @@ -231,8 +231,8 @@ layout_set_main_h(struct window *w) { struct window_pane *wp; struct layout_cell *lc, *lcmain, *lcrow, *lcchild; - u_int n, mainheight, width, height, used; - u_int i, j, columns, rows, totalrows; + u_int n, mainheight, otherheight, width, height; + u_int used, i, j, columns, rows, totalrows; layout_print_cell(w->layout_root, __func__, 1); @@ -252,6 +252,16 @@ layout_set_main_h(struct window *w) /* Get the main pane height and add one for separator line. */ mainheight = options_get_number(&w->options, "main-pane-height") + 1; + + /* Get the optional other pane height and add one for separator line. */ + otherheight = options_get_number(&w->options, "other-pane-height") + 1; + + /* + * If an other pane height was specified, honour it so long as it + * doesn't shrink the main height to less than the main-pane-height + */ + if (otherheight > 1 && w->sx - otherheight > mainheight) + mainheight = w->sx - otherheight; if (mainheight < PANE_MINIMUM + 1) mainheight = PANE_MINIMUM + 1; @@ -342,8 +352,8 @@ layout_set_main_v(struct window *w) { struct window_pane *wp; struct layout_cell *lc, *lcmain, *lccolumn, *lcchild; - u_int n, mainwidth, width, height, used; - u_int i, j, columns, rows, totalcolumns; + u_int n, mainwidth, otherwidth, width, height; + u_int used, i, j, columns, rows, totalcolumns; layout_print_cell(w->layout_root, __func__, 1); @@ -363,6 +373,16 @@ layout_set_main_v(struct window *w) /* Get the main pane width and add one for separator line. */ mainwidth = options_get_number(&w->options, "main-pane-width") + 1; + + /* Get the optional other pane width and add one for separator line. */ + otherwidth = options_get_number(&w->options, "other-pane-width") + 1; + + /* + * If an other pane width was specified, honour it so long as it + * doesn't shrink the main width to less than the main-pane-width + */ + if (otherwidth > 1 && w->sx - otherwidth > mainwidth) + mainwidth = w->sx - otherwidth; if (mainwidth < PANE_MINIMUM + 1) mainwidth = PANE_MINIMUM + 1; @@ -1,4 +1,4 @@ -.\" $Id: tmux.1,v 1.277 2010-12-11 18:42:20 nicm Exp $ +.\" $Id: tmux.1,v 1.278 2010-12-22 15:23:59 tcunha Exp $ .\" .\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> .\" @@ -2199,6 +2199,25 @@ Windows that have been silent for the interval are highlighted in the status line. An interval of zero disables the monitoring. .Pp +.It Ic other-pane-height Ar height +Set the height of the other panes (not the main pane) in the +.Ic main-horizontal +layout. +If this option is set to 0 (the default), it will have no effect. +If both the +.Ic main-pane-height +and +.Ic other-pane-height +options are set, the main pane will grow taller to make the other panes the +specified height, but will never shrink to do so. +.Pp +.It Ic other-pane-width Ar width +Like +.Ic other-pane-height , +but set the width of other panes in the +.Ic main-vertical +layout. +.Pp .It Xo Ic remain-on-exit .Op Ic on | off .Xc @@ -1,4 +1,4 @@ -/* $Id: tmux.c,v 1.226 2010-12-10 21:19:13 nicm Exp $ */ +/* $Id: tmux.c,v 1.227 2010-12-22 15:23:59 tcunha Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -410,6 +410,8 @@ main(int argc, char **argv) options_set_number(wo, "monitor-activity", 0); options_set_string(wo, "monitor-content", "%s", ""); options_set_number(wo, "monitor-silence", 0); + options_set_number(wo, "other-pane-height", 0); + options_set_number(wo, "other-pane-width", 0); options_set_number(wo, "window-status-attr", 0); options_set_number(wo, "window-status-bg", 8); options_set_number(wo, "window-status-current-attr", 0); |