Subject: bug#48493: 28.0.50; quit-window doesn't work

From: pillule <[email-masked]>
Date: Mon, 24 May 2021 14:53:21 +0000

martin rudalics <[email-masked]> writes:

>  > Looks like commit 0a681590268a4039f95a5a919b6b6d4f4e880d4c is
>  > the problem.

Sorry about that.

> Right.  Can you try the attached patch?  pillule, please also 
> have a
> look into this.

I think there is still edges cases :

with emacs -Q

;; set some rules
(setq display-buffer-alist
     '(("\\*\\(Backtrace\\)\\*"
       (display-buffer-in-side-window)
       (window-height . 0.2)
       (side . bottom))
       ("\\*\\(Messages\\)\\*"
       (display-buffer-in-side-window)
       (window-height . 0.2)
       (side . bottom))))

;; display the *Messages* buffer
(view-echo-area-messages)

;; trigger a logical error to display the *Backtrace* buffer
(> vim emacs)

;; trigger a quit-restore-window by calling kill-buffer in a 
   dedicated window
(kill-buffer (get-buffer "*Backtrace*"))
;; the dedicated property has been cleaned from the window,
;; yet *Messages* is displayed in place of this window !
(kill-buffer (get-buffer "*Messages*"))
;; calling kill-buffer in a non-dedicated window,
;; does not trigger quit-restore-window anymore
;; resulting in an undesirable buffer being displayed in place.

What is the desired behavior of a dedicated window here ?
Must *Messages* be displayed after we killed *Backtrace* in the 
first place ?
I am suspecting that the locale value of `kill-buffer-hook' in 
*Backtrace* is interfering with this test but I have difficulties 
to find its human readable form.

--