Subject: bug#57837: 29.0.50; fit-window-to-buffer should reposition the buffer

From: Sam Steingold <[email-masked]>
Date: Thu, 15 Sep 2022 14:30:36 -0400

> * Eli Zaretskii <[email-masked]> [2022-09-15 21:03:33 +0300]:
>
>> From: Sam Steingold <[email-masked]>
>> Date: Thu, 15 Sep 2022 13:31:48 -0400
>> 
>> When the buffer is smaller than the window, move the point to the end
>> and do `C-x w -` (fit-window-to-buffer).
>> The window shrinks, but it is empty - the whole buffer is above.
>> One has to move the point to the beginning-of-buffer to make the buffer
>> visible.
>> 
>> I think this is a bug - the window should show the whole buffer; after
>> all this is the raison d'etre of `fit-window-to-buffer', right?
>
> Yes, but by having point at EOB (and assuming the last line ends in a
> newline), you've made point be outside of the window's text.

Yes, this is a corner case.

> Instead of moving point to the end, move it to last line of the
> buffer, and then "C-x w -" will leave the entire buffer text on
> display.

Indeed, this function mostly works.

>> Basically, after `fit-window-to-buffer' is called, the following should
>> evaluate to t:
>> 
>> --8<---------------cut here---------------start------------->8---
>> (and (pos-visible-in-window-p (point-min))
>>      (pos-visible-in-window-p (point-max)))
>> --8<---------------cut here---------------end--------------->8---
>
> No, because point-max is after the last newline, and thus effectively
> one line beyond the window's text.

As I said, if `fit-window-to-buffer' has a "contract", it's the invariant
above.  Violating it, albeit in a corner case, is, IMO, a bug.

I am not sure how this should be fixed - either by allowing the point to
be outside of the window (if that is possible) or extending the window
by 1 extra line in this corner case - but it _should_ be possible to fix
it.

Thank you.

-- 
Sam Steingold (https://aphar.dreamwidth.org/) on darwin Ns 10.3.2113
https://lastingimpactpsychology.com https://steingoldpsychology.com
https://www.peaceandtolerance.org/ https://jihadwatch.org https://camera.org
I haven't lost my mind -- it's backed up on tape somewhere.