bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#52491: 28.0.90; Regression in window deletion with minibuffer


From: Juri Linkov
Subject: bug#52491: 28.0.90; Regression in window deletion with minibuffer
Date: Sun, 19 Dec 2021 19:14:08 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (x86_64-pc-linux-gnu)

>> Maybe it would be possible to change the default behavior of delete-window
>> to do what it did in Emacs 27?  But honestly, I don't understand how
>> this old code managed to select the minibuffer after deleting the
>> completions buffer and why its behavior differs after it was moved to Lisp:
>>
>> -      /* Now look whether `get-mru-window' gets us something.  */
>> -      mru_window = call1 (Qget_mru_window, frame);
>> -      if (WINDOW_LIVE_P (mru_window)
>> -          && EQ (XWINDOW (mru_window)->frame, frame))
>> -        new_selected_window = mru_window;
>
> I doubt that anything has changed here - the Emacs 27 code didn't select
> the minibuffer window either.  What has changed, however, is the value
> of the 'quit-restore' parameter of the *Completions* window.  With Emacs
> 27 it was a a quadruple whose third element was the minibuffer window
> which subsequently got selected.  With Emacs 28 it is nil.

I checked that the value is the same in 27 and 28.  But while comparing
quit-restore-window in 27 and 28 indeed there are many differences.

In 27, quit-restore-window calls window--delete, and then later does
`(select-window (nth 2 quit-restore))'.

But in 28, for the dedicated *Completions* window it calls
window--delete, but doesn't call `(select-window (nth 2 quit-restore))'
afterwards, that is another `cond' branch.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]