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 ,