From: grischka <grishka@gmx.de>
To: martin rudalics <rudalics@gmx.at>
Cc: emacs-devel@gnu.org
Subject: Re: Window configurations
Date: Thu, 13 May 2010 13:40:29 +0200 [thread overview]
Message-ID: <4BEBE52D.5080102@gmx.de> (raw)
In-Reply-To: <4BEBD2E3.8020200@gmx.at>
martin rudalics wrote:
> > In my book configuration is rules and state is result from their application
> > (together with other conditions). Conflating the both will just produce a
> > classical chicken & egg problem.
>
> If you specify a configuration procedurally you have to supply (1) an
> initial state and (2) a set of actions and the order in which these
> actions are applied. In the context of window configurations, the state
> resulting after applying (2) to (1) is the "state of all windows" as I
> call it. Hence the difference is basically only a matter of taste,
> theroretically.
It might be a matter of taste whether you prefer eggs or chicken but
the difference is certainly more than theoretical ;)
> From a practical point of view things are different: If you want to
> derive (1) and (2) from the state of Emacs at some arbitrary point of
> time you do have to guess a _minimum_ set of actions/rules that
> reproduce the state of windows. Otherwise, you end up like the
> designers of ECB who record _all_ actions applied by the user and
> "replay" them to produce the desired state.
I remember that differently. With ECB you can really choose from layouts
visually and even create new ones with a sort of interactive layout editor.
It is true that it stored the layouts as procedural sequences internally,
but that is just an implementation detail.
Aside from that it is really trivial to specify any reasonably complex
layouts as simple lisp structure, with sizes in percent, similar to say
framesets in html:
(setq my-layout '(
(div-v
(30 div-h
(75 top-window-1)
(25 top-window-2)
)
(55 div-h
(25 div-v
(50 sidebar-1)
(25 sidebar-2)
(25 sidebar-3)
)
(75 edit-area)
)
(15 tool-window)
)))
That simple thing would be a pretty detailed layout already suited for
almost all purposes (except GUD perhaps). More precisely, a layout
_configuration_, which means that the elements (windows) are shown only
when needed.
Now you'd have a function that processes the tree to remove the unshown
components, resizes the remaining components proportionally and then put
it on screen in one go using good old split-window and then shows the
buffers on top of each window's buffer stack.
For that of course you need a second set of preferences, that is what
buffer show in what pane: For example, *messages*, *compilation*,
*completion*, etc. can be assigned to "tool-window", *speedbar* to
sidebar-1, *help* on "top-1", files and such to "edit-area", and so on ...
--- grischka
next prev parent reply other threads:[~2010-05-13 11:40 UTC|newest]
Thread overview: 163+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-11 13:54 Window configurations grischka
2010-05-12 9:28 ` martin rudalics
2010-05-12 11:12 ` grischka
2010-05-12 13:03 ` martin rudalics
2010-05-12 18:33 ` grischka
2010-05-13 10:22 ` martin rudalics
2010-05-13 11:40 ` grischka [this message]
2010-05-13 13:53 ` martin rudalics
2010-05-13 17:13 ` grischka
2010-05-13 22:57 ` Juri Linkov
2010-05-14 6:58 ` martin rudalics
2010-05-14 10:42 ` grischka
2010-05-14 11:45 ` martin rudalics
2010-05-14 13:32 ` grischka
2010-05-13 22:54 ` Juri Linkov
2010-05-14 11:12 ` grischka
2010-05-14 11:45 ` martin rudalics
2010-05-16 22:49 ` Juri Linkov
2010-05-17 9:06 ` martin rudalics
2010-05-17 22:48 ` Juri Linkov
2010-05-13 22:48 ` Juri Linkov
2010-05-14 7:00 ` martin rudalics
-- strict thread matches above, loose matches on Subject: below --
2010-05-06 11:18 grischka
2010-05-05 13:31 grischka
2010-05-05 18:10 ` Juri Linkov
2010-05-05 19:47 ` grischka
2010-05-05 20:07 ` Drew Adams
2010-04-01 16:52 Gtk tabs in emacs, new branch Angelo Graziosi
2010-04-05 8:50 ` Angelo Graziosi
2010-04-10 12:44 ` Jan Djärv
2010-04-10 17:34 ` Angelo Graziosi
2010-04-10 18:03 ` Jan Djärv
2010-04-10 22:09 ` Angelo Graziosi
2010-04-11 5:45 ` Jan Djärv
2010-04-11 8:16 ` Angelo Graziosi
2010-04-11 10:52 ` Jan Djärv
2010-04-11 17:28 ` Angelo Graziosi
2010-04-21 8:55 ` Juri Linkov
2010-04-21 15:45 ` Juri Linkov
2010-04-23 16:53 ` Drew Adams
2010-04-23 18:02 ` Juri Linkov
2010-04-23 18:28 ` Drew Adams
2010-04-24 9:17 ` Juri Linkov
2010-04-24 14:41 ` Drew Adams
2010-04-24 18:49 ` Juri Linkov
2010-04-24 19:24 ` Drew Adams
2010-04-25 5:36 ` Juri Linkov
2010-04-25 9:15 ` martin rudalics
2010-04-25 18:33 ` Window configurations (was: Gtk tabs in emacs, new branch) Juri Linkov
2010-04-26 16:16 ` Window configurations martin rudalics
2010-04-27 8:54 ` Juri Linkov
2010-04-27 12:54 ` martin rudalics
2010-04-27 18:03 ` Juri Linkov
2010-04-28 7:12 ` martin rudalics
2010-04-28 8:27 ` Juri Linkov
2010-04-27 19:55 ` Davis Herring
2010-04-28 7:12 ` martin rudalics
2010-04-28 14:50 ` Stefan Monnier
2010-04-28 8:35 ` Juri Linkov
2010-04-28 14:15 ` Davis Herring
2010-05-07 18:14 ` Juri Linkov
2010-04-30 3:19 ` Window configurations (was: Gtk tabs in emacs, new branch) Ken Hori
2010-04-30 20:33 ` Window configurations Stefan Monnier
2010-05-02 20:31 ` Juri Linkov
2010-05-02 23:34 ` Drew Adams
2010-05-03 0:50 ` Stefan Monnier
2010-05-03 0:57 ` Juri Linkov
2010-05-03 2:50 ` Stefan Monnier
2010-05-04 16:09 ` Juri Linkov
2010-05-05 6:41 ` Stephen J. Turnbull
2010-05-05 13:22 ` Stefan Monnier
2010-05-05 14:35 ` Stephen J. Turnbull
2010-05-05 21:59 ` Juri Linkov
2010-05-02 20:28 ` Juri Linkov
2010-05-03 3:31 ` Ken Hori
2010-05-04 16:12 ` Juri Linkov
2010-05-05 9:19 ` martin rudalics
2010-05-05 18:05 ` Juri Linkov
2010-05-06 8:21 ` martin rudalics
2010-05-06 20:47 ` Juri Linkov
2010-05-10 19:16 ` Juri Linkov
2010-05-11 7:01 ` martin rudalics
2010-05-11 16:45 ` Juri Linkov
2010-05-12 9:29 ` martin rudalics
2010-05-13 22:46 ` Juri Linkov
2010-05-14 6:59 ` martin rudalics
2010-05-16 22:51 ` Juri Linkov
2010-05-17 9:06 ` martin rudalics
2010-05-17 22:54 ` Juri Linkov
2010-05-18 12:07 ` martin rudalics
2010-05-31 17:28 ` martin rudalics
2010-05-31 18:39 ` Stefan Monnier
2010-05-31 19:12 ` Lennart Borgman
2010-05-31 20:23 ` Juri Linkov
2010-06-01 9:24 ` martin rudalics
2010-05-31 20:19 ` Juri Linkov
2010-06-01 3:13 ` Stefan Monnier
2010-06-01 9:25 ` martin rudalics
2010-06-01 12:58 ` Stefan Monnier
2010-06-01 9:24 ` martin rudalics
2010-06-01 13:08 ` Stefan Monnier
2010-06-01 14:02 ` Lennart Borgman
2010-06-01 16:04 ` martin rudalics
2010-06-01 19:20 ` Stefan Monnier
2010-06-02 12:59 ` martin rudalics
2010-06-02 14:08 ` Stefan Monnier
2010-06-03 8:55 ` martin rudalics
2010-06-01 19:54 ` Juri Linkov
2010-06-02 13:00 ` martin rudalics
2010-06-02 19:46 ` Juri Linkov
2010-06-03 8:55 ` martin rudalics
2010-06-03 18:55 ` Juri Linkov
2010-06-14 17:05 ` martin rudalics
2010-06-14 21:54 ` Juri Linkov
2010-06-15 7:08 ` martin rudalics
2010-06-15 21:31 ` Juri Linkov
2010-06-16 17:25 ` martin rudalics
2010-06-16 20:51 ` Juri Linkov
2010-06-17 7:58 ` martin rudalics
2010-06-17 8:42 ` Juri Linkov
2010-06-17 10:20 ` martin rudalics
2010-06-17 20:38 ` Juri Linkov
2010-06-17 22:55 ` Lennart Borgman
2010-06-18 6:34 ` martin rudalics
2010-06-18 8:28 ` Juri Linkov
2010-06-18 9:04 ` martin rudalics
2010-06-19 8:50 ` Juri Linkov
2010-06-19 13:47 ` martin rudalics
2010-06-19 14:12 ` Juri Linkov
2010-06-19 18:56 ` martin rudalics
2010-06-01 19:51 ` Juri Linkov
2010-06-02 13:00 ` martin rudalics
2010-06-02 19:49 ` Juri Linkov
2010-06-03 8:57 ` martin rudalics
2010-06-03 14:22 ` Stefan Monnier
2010-06-03 15:42 ` martin rudalics
2010-06-04 13:11 ` Stefan Monnier
2010-06-04 14:07 ` martin rudalics
2010-06-04 16:59 ` Juri Linkov
2010-06-05 12:49 ` martin rudalics
2010-06-04 10:36 ` Richard Stallman
2010-06-04 14:06 ` martin rudalics
2010-06-03 18:54 ` Juri Linkov
2010-06-04 8:11 ` martin rudalics
2010-06-04 16:57 ` Juri Linkov
2010-06-05 12:49 ` martin rudalics
2010-06-05 19:47 ` Juri Linkov
2010-06-06 13:21 ` Stefan Monnier
2010-06-07 18:31 ` Juri Linkov
2010-06-03 18:52 ` Juri Linkov
2010-06-04 8:11 ` martin rudalics
2010-06-04 17:09 ` Juri Linkov
2010-06-05 12:49 ` martin rudalics
2010-06-05 19:49 ` Juri Linkov
2010-06-05 21:58 ` Stefan Monnier
2010-06-07 18:30 ` Juri Linkov
2010-06-06 10:38 ` martin rudalics
2010-06-07 1:12 ` Stefan Monnier
2010-06-07 13:40 ` martin rudalics
2010-06-07 15:36 ` Stefan Monnier
2010-06-07 17:38 ` Lennart Borgman
2010-06-08 13:06 ` martin rudalics
2010-06-08 20:19 ` Stefan Monnier
2010-06-11 13:20 ` martin rudalics
2010-06-11 13:52 ` Stefan Monnier
2010-06-11 17:12 ` martin rudalics
2010-05-05 18:19 ` Stefan Monnier
2010-05-06 8:22 ` martin rudalics
2010-05-06 13:04 ` Stefan Monnier
2010-05-06 14:59 ` martin rudalics
2010-05-06 16:17 ` Stefan Monnier
2010-05-08 3:09 ` Kevin Rodgers
2010-05-08 13:54 ` martin rudalics
2010-05-08 15:42 ` Lennart Borgman
2010-05-09 14:01 ` martin rudalics
2010-05-09 14:21 ` Lennart Borgman
2010-05-09 15:01 ` martin rudalics
2010-06-29 9:01 ` martin rudalics
2010-06-29 9:23 ` Juri Linkov
2010-06-29 10:01 ` martin rudalics
2010-06-29 10:37 ` Juanma Barranquero
2010-06-29 12:16 ` martin rudalics
2010-06-29 20:14 ` Juanma Barranquero
2010-06-29 20:01 ` Juri Linkov
2010-06-30 6:35 ` martin rudalics
2010-06-30 8:12 ` 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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4BEBE52D.5080102@gmx.de \
--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 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.