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

From: Juri Linkov <[email-masked]>
Date: Mon, 22 Jan 2024 09:43:09 +0200

> I attach a patch.  Note that in my Emacs, window configurations are much
> more lightweight so I cannot reliably test it.  You would have to do all
> the testing yourself.

Thanks, this works great.  Some observations:

1. 'post-set-window-configuration-functions' is called even
after 'delete-other-windows' and 'kill-buffer', albeit with
windows=nil, so no problems.

2. It seems there is no way to get the name of the killed buffer
from '(nth 1 quad)'?

Here is what I tried:

(defun foo (frame windows)
  (while windows
    (let* ((quad (car windows))
	   (window (car quad))
	   (buffer (generate-new-buffer
                    (format " *Old buffer %s*" (nth 1 quad)))))
      (with-current-buffer buffer
        (insert (format "Restore the original buffer named %s:\n"
			(nth 1 quad)))
	(insert-button
	 "[Restore]"
         'action
	 (lambda (_button)
           (set-window-buffer window (find-file-noselect
                                      (buffer-file-name (nth 1 quad))))
	   (set-window-point window (nth 3 quad))
	   (set-window-start window (nth 2 quad) t)))
	(set-window-buffer window buffer)))
    (setq windows (cdr windows))))

It inserts to the transient buffer this text without the real buffer name:

  Restore the original buffer named #<killed buffer>:
  [Restore]

But the button really restores the original buffer.

3. It seems the buffer-local value of 'revert-buffer-function'
   is not preserved in the killed buffer?