unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "grischka" <grishka@gmx.de>
To: <emacs-devel@gnu.org>, "martin rudalics" <rudalics@gmx.at>
Subject: Re: split-window-preferred-function
Date: Sat, 5 Apr 2008 20:35:31 +0200	[thread overview]
Message-ID: <010001c8974b$da82b680$130990d4@j4f3n1> (raw)
In-Reply-To: 47F79DEE.6000806@gmx.at

From: "martin rudalics":

> IIUC elscreen is useful for switching between existing layouts.  Such
> layouts are obtained by recursively splitting a root window horizontally
> or vertically.  You can record such a layout in volatile memory by
> calling `current-window-configuration' and you can re-create it from
> there via `set-window-configuration'.  But you cannot (easily) define
> and subsequently create such a layout manually.  Hence elscreen seems
> hardly of any help in this context.  Please correct me if I'm wrong.

Actually elscreen has a separate "layout creation" mode (although it
is not as easy to use, and also IMO redundant, it could as well just 
live record user changes made in the "real" frame). 

But yes, you can save everything to disk, anytime.  Means it allows 
to get used to something, body-language wise. 

> I can think of two options:
> 
> 1. Make the underlying window structure accessible in Elisp - via
>     parameters or functions like `window-parent' and `set-window-parent'.
>     This would require careful design of things like `set-window-parent'
>     to avoid introducing incoherent or faulty window layouts via Elisp.
> 
> 2. Write a collection of functions that recursively tile a root window
>     in some well-defined manner according to rules that humans can easily
>     write, read and understand.  Maybe some of these layouts should be
>     depicted in a graphical fashion, for example, in the toolbar (my
>     Thunderbird permits me to choose among three basic tilings).

Option three: Allow zero-width and zero-height windows. 

For example:

+---+-----------+
|   |           |
|   |           |
|   |           |
|   |           |
|   |           |
|   |           | <--
|   |           |
|   |           |
+===+===========+

As you don't see there is a zero-height window at bottom, which 
when "on" spans up to the arrow, but is invisible by default.

Such there is actually no need for the code to *ever* create 
new windows automatically, because the "tree" is already either 
predefined and/or customized. Just the sizes aren't filled in always.

All windows would have some target class-properties, like "file", 
"help", "commandline", so if some buffer needs to be shown, the 
buffer/window-manager (which of I assume emacs has one) can apply 
some logic which buffer to show in what window.

For example:

(window
    :name "bottom-display"
    :content-classes '("*help*" "*output*" ...)
    ...
    :visible 'if-needed

Still the user is allowed to modify the tree anytime of course, 
by split-window or whatever.  Just not the code.  

--- grischka





  reply	other threads:[~2008-04-05 18:35 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-05 12:36 split-window-preferred-function grischka
2008-04-05 15:42 ` split-window-preferred-function martin rudalics
2008-04-05 18:35   ` grischka [this message]
2008-04-05 22:02     ` split-window-preferred-function martin rudalics
2008-04-06 16:45       ` split-window-preferred-function grischka
2008-04-06 20:35   ` split-window-preferred-function Juri Linkov
  -- strict thread matches above, loose matches on Subject: below --
2008-03-19 21:42 split-window-preferred-function martin rudalics
2008-03-20 23:02 ` split-window-preferred-function Juri Linkov
2008-03-21  1:47   ` split-window-preferred-function Stefan Monnier
2008-03-22  1:07     ` split-window-preferred-function Juri Linkov
2008-03-22 16:36       ` split-window-preferred-function Stefan Monnier
2008-03-23  2:16         ` split-window-preferred-function Juri Linkov
2008-03-27 23:44         ` split-window-preferred-function Juri Linkov
2008-03-28 19:50           ` split-window-preferred-function martin rudalics
2008-03-29  0:45             ` split-window-preferred-function Juri Linkov
2008-03-29  9:05               ` split-window-preferred-function martin rudalics
2008-03-29 12:30                 ` split-window-preferred-function Juri Linkov
2008-03-29 13:25                   ` split-window-preferred-function martin rudalics
2008-03-29 19:42                   ` split-window-preferred-function Stefan Monnier
2008-03-30  5:49                   ` split-window-preferred-function Richard Stallman
2008-04-02  8:53                     ` split-window-preferred-function martin rudalics
2008-04-02  9:36                       ` split-window-preferred-function Tassilo Horn
2008-04-02  9:58                         ` split-window-preferred-function martin rudalics
2008-04-02 10:30                           ` split-window-preferred-function Tassilo Horn
2008-04-02 12:13                             ` split-window-preferred-function martin rudalics
2008-04-02 12:33                               ` split-window-preferred-function Tassilo Horn
2008-04-02 22:26                         ` split-window-preferred-function David De La Harpe Golden
2008-04-02 15:18                       ` split-window-preferred-function Stefan Monnier
2008-04-02 17:00                         ` split-window-preferred-function martin rudalics
2008-04-02 22:27                       ` split-window-preferred-function Juri Linkov
2008-04-03  6:49                         ` split-window-preferred-function martin rudalics
2008-04-03 22:52                           ` split-window-preferred-function Juri Linkov
2008-04-04  6:50                             ` split-window-preferred-function martin rudalics
2008-04-03  7:02                         ` split-window-preferred-function Tassilo Horn
2008-04-03 22:54                           ` split-window-preferred-function Juri Linkov
2008-04-04 10:04                             ` split-window-preferred-function Tassilo Horn
2008-04-04 12:19                               ` split-window-preferred-function martin rudalics
2008-04-04 12:57                                 ` split-window-preferred-function Tassilo Horn
2008-04-04 13:55                               ` split-window-preferred-function Stefan Monnier
2008-04-04 17:21                                 ` split-window-preferred-function Tassilo Horn
2008-04-04 20:21                                   ` split-window-preferred-function Stefan Monnier
2008-04-04 22:14                                     ` split-window-preferred-function Tassilo Horn
2008-04-04 23:52                                       ` split-window-preferred-function Stefan Monnier
2008-03-21  9:18   ` split-window-preferred-function martin rudalics
2008-03-22  1:09     ` split-window-preferred-function Juri Linkov

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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to='010001c8974b$da82b680$130990d4@j4f3n1' \
    --to=grishka@gmx.de \
    --cc=emacs-devel@gnu.org \
    --cc=rudalics@gmx.at \
    /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 public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).