Subject: Re: bug#68235: 29.1.90; Switching tabs stops following process output in selected window

From: Juri Linkov <[email-masked]>
Date: Wed, 24 Jan 2024 09:54:16 +0200

>> 1. 'post-set-window-configuration-functions' is called even
>> after 'delete-other-windows' and 'kill-buffer', albeit with
>> windows=nil, so no problems.
>
> I don't understand what you mean here.  Do you mean that it gets called
> because for some reason 'set-window-configuration' gets called after
> 'delete-other-windows' and 'kill-buffer'?

When I instrumented the function 'foo', it entered edebug
between 'y-or-n-p' in

  (y-or-n-p "Configuration saved ...")
  (delete-other-windows window)
  (kill-buffer buffer)
  (y-or-n-p "Configuration reset ...")

So I supposed that maybe from 'delete-other-windows' and 'kill-buffer',
but now I understand this is because exiting the minibuffer from
'y-or-n-p' calls 'set-window-configuration'.

> We could add a new field to the buffer structure and a function
> say 'buffer-last-name' which would return the last name a buffer had
> before it was renamed: nil for a new buffer, the old name before the
> last 'rename-buffer' and the last buffer name for a dead buffer.

Looks nice.

> And always think about what to propose when a new buffer with the same
> name has been created meanwhile.

Something using uniquify could help.

>> 3. It seems the buffer-local value of 'revert-buffer-function'
>>     is not preserved in the killed buffer?
>
> 'kill-buffer' calls reset_buffer_local_variables which scans the local
> variables alist of the buffer and resets all values to their default
> values.  Giving the variable either a 'permanent-local' property or
> binding the default value to the buffer local value around 'kill-buffer'
> could work around that but I'd rather try to save this (and other buffer
> local values) in a separate alist for buffers stored in a configuration.

To save revert-buffer-functions like saving positions of dired files
in window parameters?