all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eric Abrahamsen <eric@ericabrahamsen.net>
To: martin rudalics <rudalics@gmx.at>
Cc: "N. Jackson" <nljlistbox2@gmail.com>,
	Roland Winkler <winkler@gnu.org>,
	Stefan Monnier <monnier@iro.umontreal.ca>,
	emacs-devel@gnu.org
Subject: Re: Suggesting `frame-split-biggest-window' Re: customize location and shape of a new window in a frame
Date: Thu, 13 Sep 2018 09:33:06 -0700	[thread overview]
Message-ID: <87musl9x31.fsf@ericabrahamsen.net> (raw)
In-Reply-To: <5B9A1599.2060800@gmx.at> (martin rudalics's message of "Thu, 13 Sep 2018 09:45:29 +0200")

martin rudalics <rudalics@gmx.at> writes:

>> If there was a function (frame-split-biggest-window FRAME SIZE SIDE
>> PIXELWISE) to split the "biggest" [*] window in the frame, then
>> neither BBDB nor any other Elisp code would need to keep reinventing
>> this wheel.
>>
>> (The other two functions, more for interactive use, would be
>> `frame-split-biggest-window-below' and
>> `frame-split-biggest-window-right'.)
>>
>> [*] To find the "biggest" window when splitting below, find the
>> tallest window or windows and split the widest of them; when
>> splitting right, find the widest window or windows and split the
>> tallest of them.
>
> We have a number of options for that.  One of them is the option
> 'split-window-preferred-function' (a misnomer) which is by default set
> to 'split-window-sensibly'.  Consult their definitions first.  The
> latter's behavior is guided by the options 'split-height-threshold'
> and 'split-width-threshold' (two more misnomers) .  Together, these
> should provide a boilerplate for writing your own function which you
> can then put into 'display-buffer-alist'.
>
> One functionality Emacs is sadly lacking is that of orderly setting up
> and saving compositions of windows in form of a rectangle.  Eclipse
> calls these "perspectives", in Emacs the concept of "window state"
> comes most closely.  Currently, you have to set up such a state by
> using a sequence of 'split-window' calls which requires to know the
> intrinsics of window splitting, the relationship of parent and child
> windows, window combinations and the like.  Using 'display-buffer' for
> setting up states will hardly produce good results.
>
> It would be nice to have some sort of basic, prefabricated layouts
> like the ones you sketched and choose from them (though a four window
> layout with a different window in each corner of them frame would
> still require to know whether the root window is a vertical or
> horizontal combination).  But I have no good idea yet which layout
> types are really needed and how to provide a suitable interface for
> accessing them.  IIRC the "Emacs IDE" had provisions for them but I
> have not heard from its developers for years.

I thought this is what side windows are for? Maybe it would be tricky to
save and restore whole-frame window configurations (though there are
other tools for that), but side windows, combined perhaps with atomic
windows, seem like the right tool for making rectangular compositions.
The docs even say something about making Emacs look like a traditional
IDE, etc...



  parent reply	other threads:[~2018-09-13 16:33 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-11 20:31 customize location and shape of a new window in a frame Roland Winkler
2018-09-11 21:22 ` Eric Abrahamsen
2018-09-12 19:36   ` N. Jackson
2018-09-12 20:12     ` Eric Abrahamsen
2018-09-12 23:21       ` Suggesting `frame-split-biggest-window' " N. Jackson
2018-09-13  7:45         ` martin rudalics
2018-09-13 13:07           ` N. Jackson
2018-09-14  8:31             ` martin rudalics
2018-09-13 16:33           ` Eric Abrahamsen [this message]
2018-09-14  8:33             ` martin rudalics
2018-09-14 16:56               ` Eric Abrahamsen
2018-09-15  8:17                 ` martin rudalics
2018-09-14  5:17           ` Roland Winkler
2018-09-14  8:33             ` martin rudalics
2018-09-14 12:01               ` Stefan Monnier
2018-09-15  4:12                 ` Roland Winkler
2018-09-15  4:58                   ` Drew Adams
2018-09-15  8:18                   ` martin rudalics
2018-09-15 16:34                     ` Roland Winkler
2018-09-15 18:34                       ` Stefan Monnier
2018-09-15 19:21                         ` Roland Winkler
2018-09-15 12:24                 ` N. Jackson
2018-09-15 14:56                   ` Stefan Monnier
2018-09-15  0:46               ` Richard Stallman
2018-09-15  8:17                 ` martin rudalics
2018-09-16  3:14                   ` Richard Stallman
2018-09-16 19:05                     ` John Yates
2018-09-16 19:22                       ` Eli Zaretskii
2018-09-16 20:30                       ` Drew Adams
2018-09-13 16:38         ` Eric Abrahamsen
2018-09-12 14:54 ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87musl9x31.fsf@ericabrahamsen.net \
    --to=eric@ericabrahamsen.net \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    --cc=nljlistbox2@gmail.com \
    --cc=rudalics@gmx.at \
    --cc=winkler@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.