Subject: Re: bug#32672: 27.0.50; image resize on window resizing

From: Juri Linkov <[email-masked]>
Date: Thu, 20 Sep 2018 02:15:34 +0300

>> 2 ... current: *scratch* ... window-buffer: *info*
>>
>> which is in an inconsistent state,
>
> ... not really - look at the backtrace:

But the problem is that the buffer-local hook will have such idiomatic code:

  (with-current-buffer (window-buffer window)
    ...

where window-buffer will return a wrong buffer.

>> and after typing `q' the hook is called 3 times
>>
>> 3 ... current: *scratch* ... window-buffer: *scratch*
>> 4 ... current: *scratch* ... window-buffer: *scratch*
>> 5 ... current: *scratch* ... window-buffer: *scratch*
>
> Look at the backtraces:
>
> And this one comes from burying the *info* buffer.  What should we do
> instead?

I don't know.  In this particular feature request I'm going to use debounce,
but for general case I don't see how to optimize it.

>> And there is the workflow how to break the correct order
>> of `C-x <right> C-x <left>':
>>
>> 1. Create *info* buffer: `C-h i' and quit `q'
>> 2. Split windows `C-x 2' or `C-x 3' (both windows display *scratch*)
>> 3. Check that `C-x <right> C-x <left>' correctly returns to the original
>>     buffer *scratch* in the first window.
>> 4. After `C-x o' in another window `C-x <right> C-x <left>'
>>     doesn't return to the original buffer *scratch*.
>>     It displays *info*.
>
> Evidently, this comment for 'record-window-buffer'
>
> ;; The following function is called by `set-window-buffer' _before_ it
> ;; replaces the buffer of the argument window with the new buffer.
>
> had its purpose.  Please try the attached patch.

Thanks, now the problem is not reproducible.