Support variable name for previous-window in display-buffer-in-previous-window

* lisp/window.el (display-buffer-in-previous-window): Support the value of
'previous-window' entry as a symbol for variable name (bug#45688).
This commit is contained in:
Juri Linkov 2021-01-25 22:10:15 +02:00
parent 9d50d7a0c6
commit fb05199b0b

View file

@ -8196,8 +8196,8 @@ such alists.
If ALIST has a non-nil `inhibit-same-window' entry, the selected
window is not usable. A dedicated window is usable only if it
already shows BUFFER. If ALIST contains a `previous-window'
entry, the window specified by that entry is usable even if it
never showed BUFFER before.
entry, the window specified by that entry (either a variable
or a value) is usable even if it never showed BUFFER before.
If ALIST contains a `reusable-frames' entry, its value determines
which frames to search for a usable window:
@ -8239,6 +8239,7 @@ indirectly called by the latter."
0)
(display-buffer-reuse-frames 0)
(t (last-nonminibuffer-frame))))
(previous-window (cdr (assq 'previous-window alist)))
best-window second-best-window window)
;; Scan windows whether they have shown the buffer recently.
(catch 'best
@ -8252,7 +8253,9 @@ indirectly called by the latter."
(throw 'best t)))))
;; When ALIST has a `previous-window' entry, that entry may override
;; anything we found so far.
(when (and (setq window (cdr (assq 'previous-window alist)))
(when (and previous-window (boundp previous-window))
(setq previous-window (symbol-value previous-window)))
(when (and (setq window previous-window)
(window-live-p window)
(or (eq buffer (window-buffer window))
(not (window-dedicated-p window))))