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

Reply via email to