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 <
anin...@gmail.com>
> wrote:
>
> Thanks sounds perfect.
> Best,
> Anindya
> On Tue, Oct 8, 2019 at 7:41 AM Nicholas Marriott
> <
nicholas...@gmail.com> 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 <
nicholas...@gmail.com> 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 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 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 <
anin...@gmail.com>
> >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 <
anin...@gmail.com>
> >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 <
nicholas...@gmail.com> 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
> <
tho...@xteddy.org>
> >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
> <
anin...@gmail.com>
> >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
>
tmux-users+...@googlegroups.com.
> >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 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.