[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#11810: 24.1.50; `vc-diff' shrinks pre-existing window
From: |
Dmitry Gutov |
Subject: |
bug#11810: 24.1.50; `vc-diff' shrinks pre-existing window |
Date: |
Sat, 30 Jun 2012 02:39:33 +0400 |
User-agent: |
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20120614 Thunderbird/13.0.1 |
Hi Martin,
On 29.06.2012 11:12, martin rudalics wrote:
> Commands messing up existing window configuration is one of my top
> Emacs annoyances, and AFAIK it confuses the new users, too.
> Maybe nil check for (window-prev-buffers) should be instead included in
> `shrink-window-if-larger-than-buffer', with a way to override it?
This problem has been previously discussed here
http://lists.gnu.org/archive/html/emacs-devel/2010-08/msg00638.html
If people want an option here, please decide on
- the values it should take, and
- how to meld it with `temp-buffer-resize-mode'.
I think renaming and reusing `even-window-heights' is a good thing to
do. I'd even suggest changing the default value, because, as you can
see, virtually nobody among users knows about this variable:
http://stackoverflow.com/questions/4716855/how-can-i-prevent-emacs-resizing-my-windows
(Usually folks at SO give fairly comprehensive answers).
And personally, I'd have been very happy to know about it about 1-2
years ago, before `pop-to-window' behavior strongly conditioned me
against manually resizing windows.
I don't think I've ever used `temp-buffer-resize-mode', but if it's a
minor mode that a user has to enable explicitly, it should be fine if it
overrides the value of `resize-windows-for-display'.
Please note that `temp-buffer-resize-mode' already does the sane thing:
it only resizes the window if the window is new and not reused.
To answer you question in the last message:
>> ! (let ((resize-windows-for-display nil))
>> ! (pop-to-buffer (current-buffer)))
>
> Here you explicitly override the user option - is that intentional?
It's intentional, because `vc-diff-internal' calls `pop-to-buffer'
before the diff command returns its full output, so the window height
adjustment happens in `vc-diff-finish' which runs after the process
returns. So you might want to account for this usage.
Regarding "two similar approaches", I think just having an off by
default `even-window-heights` variable and `temp-buffer-resize-mode' may
satisfy more or less everyone, except there'd at least need to be a way
to make shrinking asynchronous, as per above.
-- Dmitry