From: martin rudalics <rudalics@gmx.at>
To: Stefan Monnier <monnier@IRO.UMontreal.CA>
Cc: emacs-devel@gnu.org
Subject: Re: moving window handling into lisp
Date: Wed, 12 Aug 2009 10:56:56 +0200 [thread overview]
Message-ID: <4A8283D8.6070208@gmx.at> (raw)
In-Reply-To: <jwvab265fzg.fsf-monnier+emacs@gnu.org>
> There'd be new low-level functions to resize windows which would work in
> simple and predictable ways, but with the end-state being potentially
> invalid.
And how'd we revert to a valid state? Using `set-window-configuration'?
Wasn't that something you wanted to avoid?
>> I suppose we should merge these functions into one Elisp function that
>> moves the trailing edge of a window and have one C function checking
>> whether the resulting window tree is well-formed and, if that is the
>> case, apply the change.
>
> As a "high-level" function, I'd imagine a function that looks like
> (window-resize W N) and returns the amount that it was able to resize
> (between 0 and N).
> It would work by calling itself recursively ...
For modeline dragging we need a function which resizes a window by
moving _one edge_ only (which can be either the leading or the trailing
one). If, in addition, we want to call that function recursively we
must be able to specify _which edge_ it should move, that is, it must be
able to move trailing _and_ leading edges. Moreover, we probably want
to specify whether the function is allowed to delete windows, resize
windows below `window-min-height' or `window-min-width', or ignore the
value of `window-size-fixed'.
Also I think that a call with N > 1 failing to resize the window should
be able to result in an abort. An application that can't get a window
of the appropriate size might prefer to use a new frame and leave the
original configuration unchanged. Should it do that by saving the
window configuration and restoring it provided the amount returned by
`window-resize' doesn't fit its needs?
> ... on siblings and/or children.
Including siblings of the window's parent, grandparent, ... I suppose.
> It can't fail and cannot result in an invalid window-tree.
IMO `window-resize' should be written in Elisp while the check whether a
window tree is invalid would reside in C to guarantee that Elisp code
never crashes Emacs. I'm not sure about the interface though. I
imagine primitives like say `book-window-parent', `book-window-top',
`book-window-lines', ... and have a function checking-in the booked
values by (1) checking whether the booked values form a valid window
tree and, if that is the case, (2) replacing the actual values by the
booked values.
martin
next prev parent reply other threads:[~2009-08-12 8:56 UTC|newest]
Thread overview: 130+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-27 8:32 moving window handling into lisp Miles Bader
2009-07-27 13:37 ` martin rudalics
2009-07-27 13:41 ` Lennart Borgman
2009-07-27 13:45 ` martin rudalics
2009-07-27 13:58 ` Lennart Borgman
2009-07-27 14:35 ` martin rudalics
2009-07-27 14:41 ` Lennart Borgman
2009-07-27 15:02 ` martin rudalics
2009-07-27 15:28 ` Lennart Borgman
2009-07-27 16:52 ` martin rudalics
2009-07-27 16:58 ` Lennart Borgman
2009-07-27 18:18 ` Stefan Monnier
2009-07-28 7:38 ` martin rudalics
2009-07-28 9:39 ` Lennart Borgman
2009-07-28 12:25 ` martin rudalics
[not found] ` <e01d8a50907280532kcff2d1w15567a430668a502@mail.gmail.com>
2009-07-28 13:23 ` martin rudalics
2009-07-28 13:44 ` Lennart Borgman
2009-07-29 9:04 ` martin rudalics
2009-07-28 13:47 ` Stefan Monnier
2009-07-28 14:11 ` Lennart Borgman
2009-07-29 9:05 ` martin rudalics
2009-07-29 14:05 ` Stefan Monnier
2009-08-01 2:20 ` Miles Bader
2009-08-03 21:29 ` Stefan Monnier
2009-08-11 9:18 ` martin rudalics
2009-08-11 19:16 ` Stefan Monnier
2009-08-11 19:29 ` Lennart Borgman
2009-08-12 8:57 ` martin rudalics
2009-08-12 9:02 ` Lennart Borgman
2009-08-12 13:33 ` martin rudalics
2009-08-12 15:57 ` Lennart Borgman
2009-08-12 17:05 ` martin rudalics
2009-08-12 19:39 ` Lennart Borgman
2009-08-12 21:10 ` Lennart Borgman
2009-08-13 9:55 ` martin rudalics
2009-08-13 9:57 ` Lennart Borgman
2009-08-13 10:25 ` Lennart Borgman
2009-08-13 11:32 ` Lennart Borgman
2009-08-13 12:49 ` Lennart Borgman
2009-08-13 13:56 ` martin rudalics
2009-08-13 16:43 ` Lennart Borgman
2009-08-13 18:07 ` martin rudalics
2009-08-14 1:13 ` Lennart Borgman
2009-08-14 7:18 ` martin rudalics
2009-08-14 11:21 ` Lennart Borgman
2009-08-14 13:21 ` martin rudalics
2009-08-12 8:56 ` martin rudalics [this message]
2009-08-13 2:32 ` Stefan Monnier
2009-08-13 9:54 ` martin rudalics
2009-08-13 17:00 ` Stefan Monnier
2009-08-13 18:09 ` martin rudalics
2009-08-14 1:47 ` Stephen J. Turnbull
2009-08-14 7:17 ` martin rudalics
2009-08-14 6:42 ` Richard Stallman
2009-08-14 7:18 ` martin rudalics
2009-08-14 20:56 ` Richard Stallman
2009-08-15 10:12 ` martin rudalics
2009-08-15 19:47 ` Stefan Monnier
2009-08-14 15:39 ` Stefan Monnier
2009-08-14 15:42 ` Lennart Borgman
2009-08-14 18:26 ` Stefan Monnier
2009-08-15 10:12 ` martin rudalics
2009-08-15 11:02 ` Lennart Borgman
2009-08-15 12:44 ` martin rudalics
2009-08-15 13:35 ` David Kastrup
2009-08-15 13:39 ` Lennart Borgman
2009-08-15 16:11 ` martin rudalics
2009-08-15 16:19 ` Lennart Borgman
2009-08-15 17:37 ` martin rudalics
2009-08-15 18:18 ` Lennart Borgman
2009-08-16 10:25 ` martin rudalics
2009-08-16 11:14 ` Lennart Borgman
2009-08-16 12:12 ` David Kastrup
2009-08-16 12:19 ` Lennart Borgman
2009-08-16 15:17 ` martin rudalics
2009-08-16 16:15 ` David Kastrup
2009-08-16 19:24 ` martin rudalics
2009-08-16 12:17 ` martin rudalics
2009-08-16 12:26 ` Lennart Borgman
2009-08-16 15:18 ` martin rudalics
2009-08-15 19:05 ` Stephen J. Turnbull
2009-08-16 10:26 ` martin rudalics
2009-08-16 11:16 ` Lennart Borgman
2009-08-16 12:17 ` martin rudalics
2009-08-16 12:29 ` Lennart Borgman
2009-08-16 15:18 ` martin rudalics
2009-08-16 14:49 ` Stephen J. Turnbull
2009-08-16 15:31 ` martin rudalics
2009-08-16 16:28 ` Stephen J. Turnbull
2009-08-16 19:25 ` martin rudalics
2009-08-15 15:07 ` Jan Djärv
2009-08-15 15:38 ` David Kastrup
2009-08-15 16:07 ` martin rudalics
2009-08-15 18:21 ` Stephen J. Turnbull
2009-08-16 10:25 ` martin rudalics
2009-08-15 19:51 ` Stefan Monnier
2009-08-16 10:26 ` martin rudalics
2009-08-16 11:18 ` Lennart Borgman
2009-08-16 12:17 ` martin rudalics
2009-08-16 12:30 ` Lennart Borgman
2009-07-27 14:00 ` Miles Bader
2009-07-27 14:36 ` martin rudalics
[not found] ` <4A87F8B8.6050102@gmx.at>
[not found] ` <e01d8a50908160523r12216cffm34060d2793943785@mail.gmail.com>
[not found] ` <4A882312.6020106@gmx.at>
[not found] ` <e01d8a50908191816p2d9e978dw6aa0623c79dd8699@mail.gmail.com>
[not found] ` <4A8D12B3.6070502@gmx.at>
[not found] ` <e01d8a50908200219o69f67900lb9fa9368e9aadf62@mail.gmail.com>
[not found] ` <4A8D46C9.1010108@gmx.at>
[not found] ` <e01d8a50908200622y101e5b2bq9fb5874cbb8c81fe@mail.gmail.com>
[not found] ` <4A8D66D5.3000600@gmx.at>
2009-08-20 15:41 ` Lennart Borgman
2009-08-20 18:15 ` martin rudalics
2009-08-20 23:08 ` Lennart Borgman
2009-08-21 12:40 ` martin rudalics
2009-08-21 13:58 ` Lennart Borgman
2009-08-22 11:00 ` martin rudalics
2009-08-22 13:45 ` Lennart Borgman
2009-08-22 14:17 ` martin rudalics
2009-08-21 19:34 ` Stefan Monnier
2009-08-22 11:01 ` martin rudalics
2009-08-21 0:19 ` Richard Stallman
2009-08-21 12:40 ` martin rudalics
-- strict thread matches above, loose matches on Subject: below --
2009-08-17 19:06 grischka
2009-08-18 7:13 ` martin rudalics
2009-08-18 11:38 ` Lennart Borgman
2009-08-19 9:15 ` grischka
2009-08-19 12:45 ` martin rudalics
2009-08-20 11:45 ` grischka
2009-08-20 12:51 ` martin rudalics
2009-08-20 13:05 ` David Kastrup
2009-08-20 15:08 ` martin rudalics
2009-08-20 19:35 ` grischka
2009-08-21 12:22 ` martin rudalics
2009-08-21 19:32 ` Stefan Monnier
2009-08-22 4:55 ` Stephen J. Turnbull
2009-08-23 1:01 ` Stefan Monnier
2009-08-24 13:10 ` grischka
2009-08-19 13:01 ` Lennart Borgman
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=4A8283D8.6070208@gmx.at \
--to=rudalics@gmx.at \
--cc=emacs-devel@gnu.org \
--cc=monnier@IRO.UMontreal.CA \
/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).