Subject: bug#6385: A slightly less aggressive fit-window-to-buffer

From: martin rudalics <[email-masked]>
Date: Sun, 13 Jun 2010 19:45:05 +0200

>> Please post a recipe for reproducing the problem.  I never had any
 >> problem with this in practice so I can't tell.
 >
 > Huh? You yourself said this:
 >
 >>> I don't know of a simple way to prevent deletion of windows when using
 >>> `enlarge-window'.  The problems with `fit-window-to-buffer' are just a
 >>> special case of that.
 >
 > Any you said this:
 >
 >>>> Deleting other windows when resizing was a misguided feature.
 >
 > That "misguided feature" is precisely the problem.  You recognize it, so you
 > must have sufficient recipes to produce it.

This "misguided feature" is in Emacs ever since I know it.  But you said
that ...

 > And unfortunately, I need my code to work in multiple Emacs versions.  It is
 > only for Emacs 23 (.1 and .2 and more recent) that this is a problem - I do not
 > see it happening before 23. So even if you might have a more recent version with
 > a fix I will still need a workaround for use with Emacs 23.

... and that's what I want a recipe for: A reproducible problem that
does _not_ exist in prior Emacs versions.

 > I have not seen that problem arise in releases before Emacs 23, personally.  The
 > code (e.g. for `fit-window-to-buffer') was changed considerably in Emacs 23.  I
 > have supposed that at least part of that code change introduced this "misguided
 > feature".  Perhaps I'm mistaken about that, but as I say, I do see no such
 > problem prior to Emacs 23.
 >
 > Were you involved with the code changes for this from Emacs 22 to 23?  Did those
 > changes in fact introduce this "misguided feature", or was it already present?
 >
 > As I say, I myself see no such "misguided feature" manifest itself prior to 23.
 > Even if the "misguided feature" is theoretically present also before 23, in my
 > own, practical experience it shows up only with Emacs 23.

I can answer these questions as soon as you tell me your problem.

 > Also, if you have some private code that removes this "misguided feature", why
 > does vanilla Emacs itself still suffer from it?  Is your fix not applicable in
 > general?  Does it have a downside that prevents you from applying it to vanilla
 > Emacs?

Yes.  It's a complete rewrite of window resizing in Elisp.
I hardly changed `fit-window-to-buffer', if at all.

 > I guess you are confirming that, so long as the binding (e.g. to 1) is in
 > effect, it will effectively always prevent window deletion?

No.  The let-binding just allows to make a window as small as one line
in the first place.  But it does not prevent deleting a window.  If you
have a one line window and an nine lines window in a ten lines frame and
you want to enlarge the nine lines window by one line Emacs 23 will
probably delete the one line window.

 > So my question still is: if `window-min-height' is 1, then is deletion (due to
 > enlarging or shrinking another window) always prevented?

No.

 > If not, what are the situations where such a binding is not enough to prevent
 > deletion?  And is there, for such situations, another good prevention recipe?
 >
 > I'm looking for good ways to deal practically with this "misguided feature" as
 > it manifests itself in `fit-window-to-buffer'.  Thx.

You can try to replace calls to `enlarge-window' by (appropriately
configured) calls to `adjust-window-trailing-edge'.  Look at the window
balancing code to see how that can be done.

martin