Looks great. OpenBSD is currently approaching lock so I don't want to
add new features but I will apply this after the tree unlocks, then it
will be in tmux 3.1.

If you want something else to do it would be nice if split-window -l
also accepted 10% (ie -l 10% was equivalent to -p 10) :-).

Thanks!


On Wed, Oct 09, 2019 at 12:10:57AM -0700, Anindya Mukherjee wrote:
>    Hi, the current version does what we discussed.
>    Best,
>    Anindya
>    On Tue, Oct 8, 2019 at 8:14 AM Anindya Mukherjee <[email protected]>
>    wrote:
> 
>      Thanks sounds perfect.
>      Best,
>      Anindya
>      On Tue, Oct 8, 2019 at 7:41 AM Nicholas Marriott
>      <[email protected]> wrote:
> 
>        Sure that makes sense.
> 
>        Maybe it would be better to look for a % on the number so that you do
>        '-x 25%' instead of -p flag?
> 
>        On Tue, Oct 08, 2019 at 07:36:43AM -0700, Anindya Mukherjee wrote:
>        >A  A  Thanks, yes using the window itself is perfect for the root
>        size. No need
>        >A  A  to walk.
>        >A  A  Using -p to set rather than adjust the size makes sense. In
>        that case
>        >A  A  should we make it a part of the -x or -y commands rather than
>        UDLR?
>        >A  A  Something like:
>        >A  A  resize-pane -x -p 25
>        >A  A  to resize the pane horizontally to 25% of root width (and
>        similarly for
>        >A  A  y).
>        >A  A  Best,
>        >A  A  Anindya
>        >
>        >A  A  (PGP public key:
>        >A  A 
>        
> http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x1C198D2DB291E1B0
>        >A  A  )
>        >A  A  On Tue, Oct 8, 2019 at 6:04 AM Nicholas Marriott
>        >A  A  <[email protected]> wrote:
>        >
>        >A  A  A  It seems less useful to me to be able to say "add 50% of the
>        size of the
>        >A  A  A  pane/window to the size of this cell" than to say "make this
>        cell cover
>        >A  A  A  50% of the window". But I don't really mind that much if you
>        think it is
>        >A  A  A  better.
>        >
>        >A  A  A  Oh the top cell will be the size of the WINDOW not the pane,
>        sorry. So
>        >A  A  A  it will be w->layout_root or w->sx and w->sy, not
>        wp->layout_cell.
>        >
>        >A  A  A  On Tue, Oct 08, 2019 at 05:34:27AM -0700, Anindya Mukherjee
>        wrote:
>        >A  A  A  >AA  AA  I was thinking that "-p percent" would be a way to
>        enter an
>        >A  A  A  adjustment for
>        >A  A  A  >AA  AA  the "resize by" commands like LRUD. So it would
>        "resize by".
>        >A  A  A  >AA  AA  In my 2x2 grid example when I look at the top level
>        cell (found
>        >A  A  A  by walking
>        >A  A  A  >AA  AA  up) its size is 244x65 (for the current terminal
>        size), while the
>        >A  A  A  size of
>        >A  A  A  >AA  AA  both the target wp and its layout cell is 122x32.
>        Is there a
>        >A  A  A  quick way to
>        >A  A  A  >AA  AA  get to the top level given the target pane?
>        >A  A  A  >AA  AA  Alternatively we can resize by a percentage of the
>        target pane's
>        >A  A  A  size like
>        >A  A  A  >AA  AA  I was doing initially which is also intuitive.
>        >A  A  A  >AA  AA  Best,
>        >A  A  A  >AA  AA  Anindya
>        >A  A  A  >AA  AA  On Tue, Oct 8, 2019 at 1:53 AM Nicholas Marriott
>        >A  A  A  >AA  AA  <[email protected]> wrote:
>        >A  A  A  >
>        >A  A  A  >AA  AA  AA  OK this looks good but there are two things:
>        >A  A  A  >
>        >A  A  A  >AA  AA  AA  - if you are using the whole size you should be
>        able to use
>        >A  A  A  wp->sx and
>        >A  A  A  >AA  AA  AA  AAA  sy for the size rather than walking up to
>        it (or you can
>        >A  A  A  get the root
>        >A  A  A  >AA  AA  AA  AAA  cell directly from wp->layout_cell).
>        >A  A  A  >
>        >A  A  A  >AA  AA  AA  - this resizes BY a % of the total size which
>        seems a bit odd
>        >A  A  A  - I was
>        >A  A  A  >AA  AA  AA  AAA  thinking it would resize TO a % of the
>        total size?
>        >A  A  A  >
>        >A  A  A  >AA  AA  AA  On Tue, Oct 08, 2019 at 12:34:13AM -0700,
>        Anindya Mukherjee
>        >A  A  A  wrote:
>        >A  A  A  >AA  AA  AA  >AAA  AAA  Great, thanks!
>        >A  A  A  >AA  AA  AA  >AAA  AAA  I updated the code to use the root
>        layout cell as
>        >A  A  A  that seems
>        >A  A  A  >AA  AA  AA  intuitive to
>        >A  A  A  >AA  AA  AA  >AAA  AAA  me, and also tried to fix some of
>        the formatting
>        >A  A  A  issues.
>        >A  A  A  >AA  AA  AA  >AAA  AAA  Best,
>        >A  A  A  >AA  AA  AA  >AAA  AAA  Anindya
>        >A  A  A  >AA  AA  AA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  On Tue, Oct 8, 2019 at 12:05 AM
>        Nicholas Marriott
>        >A  A  A  >AA  AA  AA  >AAA  AAA  <[email protected]> wrote:
>        >A  A  A  >AA  AA  AA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  Looks good aside from a few
>        style nits I can fix
>        >A  A  A  before commit
>        >A  A  A  >AA  AA  AA  (use tabs
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  not spaces, all the u_int
>        variable declarations
>        >A  A  A  go in the same
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  statement, line length needs to
>        be <= 80 columns,
>        >A  A  A  new line for
>        >A  A  A  >AA  AA  AA  each new
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  sentence in tmux.1, "lines or
>        columns" not "lines
>        >A  A  A  or cells" in
>        >A  A  A  >AA  AA  AA  tmux.1).
>        >A  A  A  >AA  AA  AA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  I don't have strong feelings
>        whether -p means %
>        >A  A  A  of parent cell
>        >A  A  A  >AA  AA  AA  or total
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  size, it's up to you which you
>        prefer. I'd add a
>        >A  A  A  line to the
>        >A  A  A  >AA  AA  AA  manual
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  explaining what it means in
>        either case.
>        >A  A  A  >AA  AA  AA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  Thanks!
>        >A  A  A  >AA  AA  AA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  On Mon, Oct 07, 2019 at
>        11:44:46PM -0700, Anindya
>        >A  A  A  Mukherjee
>        >A  A  A  >AA  AA  AA  wrote:
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  Fixed a mistake in
>        the last upload.
>        >A  A  A  Sorry for the
>        >A  A  A  >AA  AA  AA  noise.
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  Although currently
>        I am using the
>        >A  A  A  parent layout cell
>        >A  A  A  >AA  AA  AA  of the
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  target window
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  pane's cell to
>        calculate the available
>        >A  A  A  space, I
>        >A  A  A  >AA  AA  AA  wonder if it
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  would be
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  better to use the
>        root layout cell,
>        >A  A  A  which is
>        >A  A  A  >AA  AA  AA  basically the entire
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  terminal. An
>        example is a 2x2 grid
>        >A  A  A  with 4 panes. Here
>        >A  A  A  >AA  AA  AA  if I just
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  use the
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  parent cell, it
>        only covers half of
>        >A  A  A  the available
>        >A  A  A  >AA  AA  AA  space and the
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  results
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  are a little less
>        intuitive compared
>        >A  A  A  to using the top
>        >A  A  A  >AA  AA  AA  level cell.
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  Best,
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  Anindya
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  On Mon, Oct 7,
>        2019 at 10:42 PM
>        >A  A  A  Anindya Mukherjee
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  <[email protected]>
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  wrote:
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  Some further
>        adjustments. I
>        >A  A  A  realised that
>        >A  A  A  >AA  AA  AA  checking the
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  percentage is not
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  necessary
>        because downstream code
>        >A  A  A  handles large
>        >A  A  A  >AA  AA  AA  values
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  correctly. Also,
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  the layout
>        type of the parent
>        >A  A  A  layout_cell is
>        >A  A  A  >AA  AA  AA  always
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  LAYOUT_WINDOWPANE so
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  I check the
>        args instead while
>        >A  A  A  calculating the
>        >A  A  A  >AA  AA  AA  adjustment
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  (which is also
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  what's done
>        in split-window).
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  Best,
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  Anindya
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  On Mon, Oct
>        7, 2019 at 9:17 PM
>        >A  A  A  Anindya Mukherjee
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  <[email protected]>
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  wrote:
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  Hi
>        Nicholas,
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  Thanks
>        for the feedback! I
>        >A  A  A  have adjusted the
>        >A  A  A  >AA  AA  AA  code
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  accordingly.
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA 
>        percentage can now be 0 to
>        >A  A  A  INT_MAX as in
>        >A  A  A  >AA  AA  AA  split-window.
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  Yes,
>        initially I was setting
>        >A  A  A  the increment as
>        >A  A  A  >AA  AA  AA  a percentage
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  of the
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA 
>        current pane size thinking
>        >A  A  A  that would be
>        >A  A  A  >AA  AA  AA  convenient.
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  However, upon
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  trying
>        percentage of the
>        >A  A  A  available space in
>        >A  A  A  >AA  AA  AA  the parent cell
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  I prefer
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  that.
>        Also it is then
>        >A  A  A  consistent with
>        >A  A  A  >AA  AA  AA  split-window.
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA 
>        Changes attached. Please
>        >A  A  A  have a look.
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  Best,
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA 
>        Anindya
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  On
>        Mon, Oct 7, 2019 at 4:57
>        >A  A  A  AM Nicholas
>        >A  A  A  >AA  AA  AA  Marriott
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAA
>        >A  A  A  <[email protected]> wrote:
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        Thanks for this.
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        For strtonum - I think
>        >A  A  A  it does no harm to
>        >A  A  A  >AA  AA  AA  let people do
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  -p0 or
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        -p99999999 to mean as
>        >A  A  A  small or as big as
>        >A  A  A  >AA  AA  AA  possible.
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        With split-window, -p
>        >A  A  A  is a % of the
>        >A  A  A  >AA  AA  AA  available space, but
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  you have
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        made
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        it a % of the existing
>        >A  A  A  size? Is this more
>        >A  A  A  >AA  AA  AA  useful?
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        You should be able to
>        >A  A  A  get the available
>        >A  A  A  >AA  AA  AA  space by looking
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  at the size
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        of
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        the parent cell
>        >A  A  A  >AA  AA  AA  (wp->layout_cell->parent->sx and sy).
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        On Sun, Oct 06, 2019 at
>        >A  A  A  03:34:33PM -0700,
>        >A  A  A  >AA  AA  AA  Anindya
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  Mukherjee wrote:
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  Thanks
>        >A  A  A  Thomas for the tips! I
>        >A  A  A  >AA  AA  AA  have adjusted the
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  code
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        accordingly.
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  Regarding
>        >A  A  A  the args_strtonum
>        >A  A  A  >AA  AA  AA  call: I want to
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  disallow percent
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        <=0 and >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  100. I
>        >A  A  A  thought adding 1, 100
>        >A  A  A  >AA  AA  AA  is a convenient
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  way of doing
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        that, and I get
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  a "too
>        >A  A  A  small/large" error when
>        >A  A  A  >AA  AA  AA  invalid values
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  are
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        supplied.AAAAAA  Is
>        >A  A  A  there any
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  issue with
>        >A  A  A  doing it this way?
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  Best,
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  Anindya
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  On Sun,
>        >A  A  A  Oct 6, 2019 at 3:03 PM
>        >A  A  A  >AA  AA  AA  Thomas Adam
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        <[email protected]>
>        >A  A  A  wrote:
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  Hi,
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAA
>        >A  A  A  Thanks.AAAAAA  Comments
>        >A  A  A  >AA  AA  AA  below:
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAA
>        >A  A  A  1.AAAAAA  You shouldn't
>        >A  A  A  >AA  AA  AA  need to use 0U for
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  integer
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        definitions.
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAA
>        >A  A  A  2.AAAAAA  In terms of
>        >A  A  A  >AA  AA  AA  calling args_strtonum()
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  for
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        percentage:AAAAAA  0,
>        >A  A  A  INT_MAX
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAA
>        >A  A  A  should be OK, rather than
>        >A  A  A  >AA  AA  AA  1, 100, no?
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAA
>        >A  A  A  3.AAAAAA  When you're
>        >A  A  A  >AA  AA  AA  resizing in either L/R
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  or U/D, the
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        layout cells are
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAA
>        >A  A  A  either LEFTRIGHT or
>        >A  A  A  >AA  AA  AA  TOPBOTTOM.AAAAAA  Rather
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  than embed your
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        percentage
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAA
>        >A  A  A  check in all of the if
>        >A  A  A  >AA  AA  AA  statements that
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  check for 'L', 'R',
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        etc., you
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  can
>        >A  A  A  pull this check out
>        >A  A  A  >AA  AA  AA  to the top,
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  something like:
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  if
>        >A  A  A  (layout ==
>        >A  A  A  >AA  AA  AA  LAYOUT_TOPBOTTOM)
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAA
>        >A  A  A  AAAAAA  AAAAAA  adjust =
>        >A  A  A  >AA  AA  AA  (wp->sy * percentage) /
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  100
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  else
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAA
>        >A  A  A  AAAAAA  AAAAAA  adjust =
>        >A  A  A  >AA  AA  AA  (wp->sx * percentage) /
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  100
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  I'm
>        >A  A  A  sure you get the
>        >A  A  A  >AA  AA  AA  idea.
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAA
>        >A  A  A  Kindly,
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAA
>        >A  A  A  Thomas
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  On
>        >A  A  A  Sun, 6 Oct 2019 at
>        >A  A  A  >AA  AA  AA  20:56, Anindya
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  Mukherjee
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        <[email protected]>
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAA
>        >A  A  A  wrote:
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  >
>        >A  A  A  Hi, I have been playing
>        >A  A  A  >AA  AA  AA  with adding a
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  percent option to
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        resize-pane.
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  It's
>        >A  A  A  on the todo list
>        >A  A  A  >AA  AA  AA  (small things) for
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  tmux, and I find
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        it very
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAA
>        >A  A  A  useful. Right now it's
>        >A  A  A  >AA  AA  AA  working for me but
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  being new to
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        tmux code I would
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  love
>        >A  A  A  to have some eyes on
>        >A  A  A  >AA  AA  AA  it. I have
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  attached my changes.
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  > If
>        >A  A  A  this is
>        >A  A  A  >AA  AA  AA  worthwhile/useful then I can
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  do it properly
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        via github. In
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  that
>        >A  A  A  case any advice on
>        >A  A  A  >AA  AA  AA  the proper
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  procedure is welcome!
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  >
>        >A  A  A  Anindya
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  > --
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  >
>        >A  A  A  You received this
>        >A  A  A  >AA  AA  AA  message because you are
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  subscribed to
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        the Google
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAA
>        >A  A  A  Groups "tmux-users"
>        >A  A  A  >AA  AA  AA  group.
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  > To
>        >A  A  A  unsubscribe from
>        >A  A  A  >AA  AA  AA  this group and stop
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  receiving emails
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        from it, send
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  an
>        >A  A  A  email to
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA 
>        [email protected].
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  AAAAA  > To
>        >A  A  A  view this discussion
>        >A  A  A  >AA  AA  AA  on the web, visit
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        >AAAAA  AAAAA  A
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  A
>        >A  A  A  >AA  AA  AA  >AAA  AAA  A
>        >A  A  A  >AA  AA  A
>        >A  A  A 
>        
> https://groups.google.com/d/msgid/tmux-users/CAN%2Bi5iO9yh4TSNJ_r7397%2BCwW55%2BwHqDOs20CBYpFmoXeZfHTA%40mail.gmail.com.
>        >A  A  A  >AA  AA  AA  >
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > diff --git
>        a/cmd-resize-pane.c
>        >A  A  A  b/cmd-resize-pane.c
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > index 8d35d96f..519c9d5e
>        100644
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > --- a/cmd-resize-pane.c
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +++ b/cmd-resize-pane.c
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > @@ -35,9 +35,9 @@ const
>        struct cmd_entry
>        >A  A  A  >AA  AA  AA  cmd_resize_pane_entry = {
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  A .name =
>        "resize-pane",
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  A .alias =
>        "resizep",
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >A
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > -AAAA  AAAA  A .args = {
>        "DLMRt:Ux:y:Z", 0, 1 },
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  A .args = {
>        "DLMp:Rt:Ux:y:Z", 0, 1
>        >A  A  A  },
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  A .usage =
>        "[-DLMRUZ] [-x width]
>        >A  A  A  [-y height] "
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  CMD_TARGET_PANE_USAGE " "
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > -AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  AAA
>        >A  A  A  "[adjustment]",
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  AAAA  "[-p
>        >A  A  A  percentage] [adjustment]",
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >A
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  A .target =
>        { 't', CMD_FIND_PANE,
>        >A  A  A  0 },
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >A
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > @@ -57,8 +57,9 @@
>        cmd_resize_pane_exec(struct
>        >A  A  A  cmd *self,
>        >A  A  A  >AA  AA  AA  struct
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  cmdq_item *item)
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  A struct
>        sessionAAAA  AAAA  AAA
>        >A  A  A  AAAA  AAAA  *s =
>        >A  A  A  >AA  AA  AA  item->target.s;
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  A const
>        charAAAA  AAAA  AAAA  AAA
>        >A  A  A  AAAA  AAAA  AAAA  *errstr;
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  A charAAAA 
>        AAAA  AAAA  AAAA  AAA
>        >A  A  A  AAAA  AAAA  AAAA  AAAA  AA
>        >A  A  A  >AA  AA  AA  *cause;
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > -AAAA  AAAA  A u_intAAAA 
>        AAAA  AAAA  AAAA  AAAA  AAA
>        >A  A  A  AAAA  AAAA  AAAA  AA
>        >A  A  A  >AA  AA  AA  adjust;
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  A u_intAAAA 
>        AAAA  AAAA  AAAA  AAAA  AAA
>        >A  A  A  AAAA  AAAA  AAAA  AA
>        >A  A  A  >AA  AA  AA  adjust = 0;
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  A intAAAA 
>        AAAA  AAAA  AAAA  AAA
>        >A  A  A  AAAA  AAAA  AAAA  AAAA  AAAA  AA
>        >A  A  A  >AA  AA  AA  x, y;
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        u_intAAAA  AAAA  AAAA  AAA
>        >A  A  A  AAAA  AAAA  AAAA  AAAA  AA
>        >A  A  A  >AA  AA  AA  AAAA  percentage = 0;
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >A
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  A if
>        (args_has(args, 'M')) {
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  A if
>        >A  A  A  >AA  AA  AA  (cmd_mouse_window(&shared->mouse, &s) ==
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  NULL)
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > @@ -81,7 +82,29 @@
>        cmd_resize_pane_exec(struct
>        >A  A  A  cmd *self,
>        >A  A  A  >AA  AA  AA  struct
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  cmdq_item *item)
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  A }
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  A
>        server_unzoom_window(w);
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >A
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > -AAAA  AAAA  A if (args->argc
>        == 0)
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA  if
>        (args_has(args, 'p')) {
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  AAAA  AAA
>        >A  A  A  percentage =
>        >A  A  A  >AA  AA  AA  args_strtonum(args, 'p', 0,
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  INT_MAX, &cause);
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  A if (cause !=
>        >A  A  A  NULL) {
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  AAAA  AAAA  AAA
>        >A  A  A  AAAA  A cmdq_error(item,
>        >A  A  A  >AA  AA  AA  "percentage %s",
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  cause);
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  AAAA  AAAA  AAA
>        >A  A  A  AAAA  A free(cause);
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  AAAA  AAAA  AAA
>        >A  A  A  AAAA  A return
>        >A  A  A  >AA  AA  AA  (CMD_RETURN_ERROR);
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  A }
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  AAAA  AAAA  /*
>        >A  A  A  Should not also have an
>        >A  A  A  >AA  AA  AA  adjustment in this
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  case. */
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  AAAA  AAAA  if
>        >A  A  A  (args->argc > 0) {
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  AAAA  AAAA  AAA
>        >A  A  A  AAAA  A cmdq_error(item,
>        >A  A  A  >AA  AA  AA  "percentage and
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  adjustment are mutually
>        exclusive");
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  AAAA  AAAA  AAA
>        >A  A  A  AAAA  A return
>        >A  A  A  >AA  AA  AA  (CMD_RETURN_ERROR);
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  AAAA  AAAA  }
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  AAAA  AAAA  /*
>        >A  A  A  Calculate adjustment
>        >A  A  A  >AA  AA  AA  from parent cell
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  size. */
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  AAAA  AAAA  if
>        >A  A  A  >AA  AA  AA  (wp->layout_cell->parent) { /* A cell
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  filling the terminal has no
>        parent */
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  AAAA  AAAA  AAA
>        >A  A  A  AAAA  AAAA  AAAA  if
>        >A  A  A  >AA  AA  AA  (args_has(args, 'U') ||
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  args_has(args, 'D'))
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  AAAA  AAAA  AAA
>        >A  A  A  AAAA  AAAA  AAAA  AAAA  AAAA  AA
>        >A  A  A  >AA  AA  AA  AAAA  adjust =
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  (wp->layout_cell->parent->sy *
>        percentage) / 100;
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  AAAA  AAAA  AAA
>        >A  A  A  AAAA  AAAA  AAAA  else
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  AAAA  AAAA  AAA
>        >A  A  A  AAAA  AAAA  AAAA  AAAA  AAAA  AA
>        >A  A  A  >AA  AA  AA  AAAA  adjust =
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  (wp->layout_cell->parent->sx *
>        percentage) / 100;
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  AAAA  AAAA  }
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  AAAA  AAAA  }
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +AAAA  AAAA  A else if
>        (args->argc == 0)
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  A adjust = 1;
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  A else {
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  AAAA  AAAA  AAAA  AAAA 
>        AAAA  AAAA  A adjust =
>        >A  A  A  >AA  AA  AA  strtonum(args->argv[0], 1, INT_MAX,
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  &errstr);
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > diff --git a/tmux.1 b/tmux.1
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > index e095ba40..f548af2c
>        100644
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > --- a/tmux.1
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +++ b/tmux.1
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > @@ -2224,13 +2224,18 @@ if
>        specified, to
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  .Ar new-name .
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  .It Xo Ic resize-pane
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  .Op Fl DLMRUZ
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +.Op Fl p Ar percentage
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  .Op Fl t Ar target-pane
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  .Op Fl x Ar width
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  .Op Fl y Ar height
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  .Op Ar adjustment
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  .Xc
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  .D1 (alias: Ic resizep )
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > -Resize a pane, up, down,
>        left or right by
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +Resize a pane, up, down,
>        left or right by a
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +.Ar percentage
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +of the available space
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +.Fl p
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +or by
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  .Ar adjustment
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  with
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  .Fl U ,
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > @@ -2246,7 +2251,11 @@ or
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  .Fl y .
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  The
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  .Ar adjustment
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > -is given in lines or cells
>        (the default is 1).
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +is given in lines or cells
>        (the default is 1).
>        >A  A  A  The
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +.Ar percentage
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +and the
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +.Ar adjustment
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  > +are mutually exclusive.
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  .Pp
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  With
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  >AAAA  .Fl Z ,
>        >A  A  A  >
>        >A  A  A  >AA  AA  AA  > diff --git a/cmd-resize-pane.c
>        b/cmd-resize-pane.c
>        >A  A  A  >AA  AA  AA  > index 8d35d96f..eeddabf9 100644
>        >A  A  A  >AA  AA  AA  > --- a/cmd-resize-pane.c
>        >A  A  A  >AA  AA  AA  > +++ b/cmd-resize-pane.c
>        >A  A  A  >AA  AA  AA  > @@ -35,9 +35,9 @@ const struct cmd_entry
>        >A  A  A  cmd_resize_pane_entry = {
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  A .name = "resize-pane",
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  A .alias = "resizep",
>        >A  A  A  >AA  AA  AA  >A
>        >A  A  A  >AA  AA  AA  > -AAA  AAA  A .args = { "DLMRt:Ux:y:Z", 0, 1
>        },
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  A .args = { "DLMp:Rt:Ux:y:Z", 0, 1
>        },
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  A .usage = "[-DLMRUZ] [-x
>        width] [-y height] "
>        >A  A  A  >AA  AA  AA  CMD_TARGET_PANE_USAGE " "
>        >A  A  A  >AA  AA  AA  > -AAA  AAA  AAA  AAA  AAA  AAA  AAA 
>        "[adjustment]",
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  AAA  "[-p
>        percentage] [adjustment]",
>        >A  A  A  >AA  AA  AA  >A
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  A .target = { 't',
>        CMD_FIND_PANE, 0 },
>        >A  A  A  >AA  AA  AA  >A
>        >A  A  A  >AA  AA  AA  > @@ -55,9 +55,10 @@
>        cmd_resize_pane_exec(struct cmd *self,
>        >A  A  A  struct
>        >A  A  A  >AA  AA  AA  cmdq_item *item)
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  A struct windowAAA  AAA  AAA 
>        AAA  AAA  A *w =
>        >A  A  A  wl->window;
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  A struct clientAAA  AAA  AAA 
>        AAA  AAA  A *c =
>        >A  A  A  item->client;
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  A struct sessionAAA  AAA  AAA 
>        AAA  AAA  *s =
>        >A  A  A  item->target.s;
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  A struct layout_cellAAA  AAA  AAA 
>        *rootlc;
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  A const charAAA  AAA  AAA  AAA 
>        AAA  AAA  AAA  *errstr;
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  A charAAA  AAA  AAA  AAA  AAA 
>        AAA  AAA  AAA  AAA  AA
>        >A  A  A  *cause;
>        >A  A  A  >AA  AA  AA  > -AAA  AAA  A u_intAAA  AAA  AAA  AAA  AAA 
>        AAA  AAA  AAA  AAA  AA
>        >A  A  A  adjust;
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  A u_intAAA  AAA  AAA  AAA  AAA 
>        AAA  AAA  AAA  AAA  AA
>        >A  A  A  adjust = 0, percentage =
>        >A  A  A  >AA  AA  AA  0;
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  A intAAA  AAA  AAA  AAA  AAA 
>        AAA  AAA  AAA  AAA  AAA  AA
>        >A  A  A  x, y;
>        >A  A  A  >AA  AA  AA  >A
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  A if (args_has(args, 'M')) {
>        >A  A  A  >AA  AA  AA  > @@ -81,7 +82,33 @@
>        cmd_resize_pane_exec(struct cmd *self,
>        >A  A  A  struct
>        >A  A  A  >AA  AA  AA  cmdq_item *item)
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  A }
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  A server_unzoom_window(w);
>        >A  A  A  >AA  AA  AA  >A
>        >A  A  A  >AA  AA  AA  > -AAA  AAA  A if (args->argc == 0)
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  A if (args_has(args, 'p')) {
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  A percentage =
>        args_strtonum(args,
>        >A  A  A  'p', 0, INT_MAX,
>        >A  A  A  >AA  AA  AA  &cause);
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  A if (cause !=
>        NULL) {
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  AAA  AAA  AAA 
>        AAA  A cmdq_error(item,
>        >A  A  A  "percentage %s",
>        >A  A  A  >AA  AA  AA  cause);
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  AAA  AAA  AAA 
>        AAA  A free(cause);
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  AAA  AAA  AAA 
>        AAA  A return
>        >A  A  A  (CMD_RETURN_ERROR);
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  A }
>        >A  A  A  >AA  AA  AA  > +
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  A /* Should
>        not also have an
>        >A  A  A  adjustment in this
>        >A  A  A  >AA  AA  AA  case. */
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  A if
>        (args->argc > 0) {
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  AAA  AAA  AAA 
>        AAA  A cmdq_error(item,
>        >A  A  A  "percentage and
>        >A  A  A  >AA  AA  AA  adjustment "
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  AAA  AAA  AAA 
>        AAA  AAA  AAA  AAA  AAA  AA
>        >A  A  A  AAA  AAA  AAA  A "are mutually
>        >A  A  A  >AA  AA  AA  exclusive");
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  AAA  AAA  AAA 
>        AAA  A return
>        >A  A  A  (CMD_RETURN_ERROR);
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  A }
>        >A  A  A  >AA  AA  AA  > +
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  A /* Find the
>        root layout cell */
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  A rootlc =
>        wp->layout_cell;
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  A while
>        (rootlc->parent)
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  AAA  AAA  AAA 
>        AAA  A rootlc =
>        >A  A  A  rootlc->parent;
>        >A  A  A  >AA  AA  AA  > +
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  A /* Calculate
>        adjustment from the
>        >A  A  A  root cell size.
>        >A  A  A  >AA  AA  AA  */
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  A if
>        (args_has(args, 'U') ||
>        >A  A  A  args_has(args, 'D'))
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  AAA  AAA  AAA 
>        AAA  A adjust =
>        >A  A  A  (rootlc->sy * percentage) /
>        >A  A  A  >AA  AA  AA  100;
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  A else
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  AAA  AAA  AAA  AAA  AAA  AAA  AAA 
>        AAA  A adjust =
>        >A  A  A  (rootlc->sx * percentage) /
>        >A  A  A  >AA  AA  AA  100;
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  A }
>        >A  A  A  >AA  AA  AA  > +AAA  AAA  A else if (args->argc == 0)
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  AAA  AAA  AAA  AAA  A adjust =
>        1;
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  A else {
>        >A  A  A  >AA  AA  AA  >AAA  AAA  AAA  AAA  AAA  AAA  AAA  A adjust =
>        >A  A  A  strtonum(args->argv[0], 1, INT_MAX,
>        >A  A  A  >AA  AA  AA  &errstr);
>        >A  A  A  >AA  AA  AA  > diff --git a/tmux.1 b/tmux.1
>        >A  A  A  >AA  AA  AA  > index e095ba40..41066ddc 100644
>        >A  A  A  >AA  AA  AA  > --- a/tmux.1
>        >A  A  A  >AA  AA  AA  > +++ b/tmux.1
>        >A  A  A  >AA  AA  AA  > @@ -2224,13 +2224,18 @@ if specified, to
>        >A  A  A  >AA  AA  AA  >AAA  .Ar new-name .
>        >A  A  A  >AA  AA  AA  >AAA  .It Xo Ic resize-pane
>        >A  A  A  >AA  AA  AA  >AAA  .Op Fl DLMRUZ
>        >A  A  A  >AA  AA  AA  > +.Op Fl p Ar percentage
>        >A  A  A  >AA  AA  AA  >AAA  .Op Fl t Ar target-pane
>        >A  A  A  >AA  AA  AA  >AAA  .Op Fl x Ar width
>        >A  A  A  >AA  AA  AA  >AAA  .Op Fl y Ar height
>        >A  A  A  >AA  AA  AA  >AAA  .Op Ar adjustment
>        >A  A  A  >AA  AA  AA  >AAA  .Xc
>        >A  A  A  >AA  AA  AA  >AAA  .D1 (alias: Ic resizep )
>        >A  A  A  >AA  AA  AA  > -Resize a pane, up, down, left or right by
>        >A  A  A  >AA  AA  AA  > +Resize a pane, up, down, left or right by a
>        >A  A  A  >AA  AA  AA  > +.Ar percentage
>        >A  A  A  >AA  AA  AA  > +of the available space
>        >A  A  A  >AA  AA  AA  > +.Fl p
>        >A  A  A  >AA  AA  AA  > +or by
>        >A  A  A  >AA  AA  AA  >AAA  .Ar adjustment
>        >A  A  A  >AA  AA  AA  >AAA  with
>        >A  A  A  >AA  AA  AA  >AAA  .Fl U ,
>        >A  A  A  >AA  AA  AA  > @@ -2246,7 +2251,12 @@ or
>        >A  A  A  >AA  AA  AA  >AAA  .Fl y .
>        >A  A  A  >AA  AA  AA  >AAA  The
>        >A  A  A  >AA  AA  AA  >AAA  .Ar adjustment
>        >A  A  A  >AA  AA  AA  > -is given in lines or cells (the default is
>        1).
>        >A  A  A  >AA  AA  AA  > +is given in lines or columns (the default is
>        1).
>        >A  A  A  >AA  AA  AA  > +The
>        >A  A  A  >AA  AA  AA  > +.Ar percentage
>        >A  A  A  >AA  AA  AA  > +and the
>        >A  A  A  >AA  AA  AA  > +.Ar adjustment
>        >A  A  A  >AA  AA  AA  > +are mutually exclusive.
>        >A  A  A  >AA  AA  AA  >AAA  .Pp
>        >A  A  A  >AA  AA  AA  >AAA  With
>        >A  A  A  >AA  AA  AA  >AAA  .Fl Z ,

> diff --git a/cmd-resize-pane.c b/cmd-resize-pane.c
> index 8d35d96f..318923ed 100644
> --- a/cmd-resize-pane.c
> +++ b/cmd-resize-pane.c
> @@ -19,6 +19,7 @@
>  #include <sys/types.h>
>  
>  #include <stdlib.h>
> +#include <string.h>
>  
>  #include "tmux.h"
>  
> @@ -55,10 +56,10 @@ cmd_resize_pane_exec(struct cmd *self, struct cmdq_item 
> *item)
>       struct window           *w = wl->window;
>       struct client           *c = item->client;
>       struct session          *s = item->target.s;
> -     const char              *errstr;
> -     char                    *cause;
> +     const char              *errstr, *percentstr;
> +     char                    *cause, *percentvalstr;
>       u_int                    adjust;
> -     int                      x, y;
> +     int                      x, y, percent, percentstrlen;
>  
>       if (args_has(args, 'M')) {
>               if (cmd_mouse_window(&shared->mouse, &s) == NULL)
> @@ -92,21 +93,73 @@ cmd_resize_pane_exec(struct cmd *self, struct cmdq_item 
> *item)
>       }
>  
>       if (args_has(args, 'x')) {
> -             x = args_strtonum(args, 'x', PANE_MINIMUM, INT_MAX, &cause);
> -             if (cause != NULL) {
> -                     cmdq_error(item, "width %s", cause);
> -                     free(cause);
> +             /* First check for percentage */
> +             percentstr = args_get(args, 'x');
> +             if (percentstr == NULL) {
> +                     cmdq_error(item, "missing");
>                       return (CMD_RETURN_ERROR);
>               }
> +
> +             percentstrlen = strlen(percentstr);
> +             if (percentstr[percentstrlen - 1] == '%') {
> +                     percentvalstr = xstrdup(percentstr);
> +                     percentvalstr[percentstrlen - 1] = '\0';
> +                     percent = strtonum(percentvalstr, 0, INT_MAX, &errstr);
> +                     free(percentvalstr);
> +                     if (errstr != NULL) {
> +                             cmdq_error(item, "width percent %s", errstr);
> +                             return (CMD_RETURN_ERROR);
> +                     }
> +                     x = (w->sx * percent) / 100;
> +                     if (x < PANE_MINIMUM)
> +                             x = PANE_MINIMUM;
> +                     if (x > INT_MAX)
> +                             x = INT_MAX;
> +             }
> +             else {
> +                     /* Check for absolute value */
> +                     x = args_strtonum(args, 'x', PANE_MINIMUM, INT_MAX, 
> &cause);
> +                     if (cause != NULL) {
> +                             cmdq_error(item, "width %s", cause);
> +                             free(cause);
> +                             return (CMD_RETURN_ERROR);
> +                     }
> +             }
>               layout_resize_pane_to(wp, LAYOUT_LEFTRIGHT, x);
>       }
>       if (args_has(args, 'y')) {
> -             y = args_strtonum(args, 'y', PANE_MINIMUM, INT_MAX, &cause);
> -             if (cause != NULL) {
> -                     cmdq_error(item, "height %s", cause);
> -                     free(cause);
> +             /* First check for percentage */
> +             percentstr = args_get(args, 'y');
> +             if (percentstr == NULL) {
> +                     cmdq_error(item, "missing");
>                       return (CMD_RETURN_ERROR);
>               }
> +
> +             percentstrlen = strlen(percentstr);
> +             if (percentstr[percentstrlen - 1] == '%') {
> +                     percentvalstr = xstrdup(percentstr);
> +                     percentvalstr[percentstrlen - 1] = '\0';
> +                     percent = strtonum(percentvalstr, 0, INT_MAX, &errstr);
> +                     free(percentvalstr);
> +                     if (errstr != NULL) {
> +                             cmdq_error(item, "height percent %s", errstr);
> +                             return (CMD_RETURN_ERROR);
> +                     }
> +                     y = (w->sy * percent) / 100;
> +                     if (y < PANE_MINIMUM)
> +                             y = PANE_MINIMUM;
> +                     if (y > INT_MAX)
> +                             y = INT_MAX;
> +             }
> +             else {
> +                     /* Check for absolute value */
> +                     y = args_strtonum(args, 'y', PANE_MINIMUM, INT_MAX, 
> &cause);
> +                     if (cause != NULL) {
> +                             cmdq_error(item, "height %s", cause);
> +                             free(cause);
> +                             return (CMD_RETURN_ERROR);
> +                     }
> +             }
>               layout_resize_pane_to(wp, LAYOUT_TOPBOTTOM, y);
>       }
>  
> diff --git a/tmux.1 b/tmux.1
> index e095ba40..aa24d8ea 100644
> --- a/tmux.1
> +++ b/tmux.1
> @@ -2225,8 +2225,8 @@ if specified, to
>  .It Xo Ic resize-pane
>  .Op Fl DLMRUZ
>  .Op Fl t Ar target-pane
> -.Op Fl x Ar width
> -.Op Fl y Ar height
> +.Op Fl x Ar width | percent%
> +.Op Fl y Ar height | percent%
>  .Op Ar adjustment
>  .Xc
>  .D1 (alias: Ic resizep )
> @@ -2246,7 +2246,8 @@ or
>  .Fl y .
>  The
>  .Ar adjustment
> -is given in lines or cells (the default is 1).
> +is given in lines or columns (the default is 1).
> +The percentages are based on the root window dimensions.
>  .Pp
>  With
>  .Fl Z ,

-- 
You received this message because you are subscribed to the Google Groups 
"tmux-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/tmux-users/20191009074750.zyrgwvwsvndf2ofw%40yelena.

Reply via email to