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

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

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


From: martin rudalics
Subject: bug#32850: 27.0.50; window-swap-states doesn't swap window prev/next-buffers
Date: Wed, 31 Oct 2018 09:11:31 +0100

>>>     (delete-other-windows) (split-window) (delete-window)
>>
>> OK.  If we document it sufficiently, let's use that.
>
> I thought it's ugly.  But if there is no other way:

It's very ugly.

> diff --git a/lisp/window.el b/lisp/window.el
> index bcd4fa2959..9fdf005202 100644
> --- a/lisp/window.el
> +++ b/lisp/window.el
> @@ -5898,20 +5898,12 @@ window-state-put
>   windows can get as small as `window-safe-min-height' and
>   `window-safe-min-width'."
>     (setq window-state-put-stale-windows nil)
> -  (setq window (window-normalize-window window))
>
> -  ;; When WINDOW is internal, reduce it to a live one to put STATE into,
> -  ;; see Bug#16793.
> +  ;; When WINDOW is internal or nil, create a new window.
>     (unless (window-live-p window)
> -    (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)))

So you want to elide this part because 'delete-other-windows' below
handles it?  But the latter respects the 'no-delete-other-windows'
parameter too which might be unwanted in the state putting mechanism.

> +    (delete-other-windows)
> +    (setq window (split-window))
> +    (delete-window))

martin





reply via email to

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