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