Subject: Re: bug#32850: 27.0.50; window-swap-states doesn't swap window prev/next-buffers

From: Juri Linkov <[email-masked]>
Date: Fri, 02 Nov 2018 00:30:54 +0200

>> -    (let ((root window))
>> -      (setq window (catch 'live
>> -                     (walk-window-subtree
>> -                      (lambda (window)
>> -                        (when (and (window-live-p window)
>> -                                   (not (window-parameter window 'window-side)))
>> -                          (throw 'live window)))
>> -                      root)))
>> -      (delete-other-windows-internal window root)))
>> +    (delete-other-windows-internal)
>> +    (setq window (split-window))
>> +    (delete-window))
>>
>>     (set-window-dedicated-p window nil)
>
> What would be bad about leaving most of that code in place and just
> adding the
>
>> +    (setq window (split-window))
>> +    (delete-window))

There is no need to find a window using walk-window-subtree
when this window will be deleted anyway (if function argument
is nil or not a live window).

OTOH, a live window should not be deleted when given
by the argument of window-state-put.