diff options
Diffstat (limited to 'lisp/window.el')
-rw-r--r-- | lisp/window.el | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/lisp/window.el b/lisp/window.el index 53ec4a665db..b43eee2f9fe 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -1006,10 +1006,16 @@ consider all visible or iconified frames." (not (last-nonminibuffer-frame))) 0) (last-nonminibuffer-frame)))) - (and (setq window-to-use (get-buffer-window buffer frames)) - (or can-use-selected-window - (not (eq (selected-window) window-to-use))))) - ;; If the buffer is already displayed in some window use that. + (setq window-to-use + (catch 'found + ;; Search all visible and iconified frames for a window + ;; displaying BUFFER. Return the selected window only + ;; if can-use-selected-window says we may do so. + (dolist (window (get-buffer-window-list buffer 'nomini 0)) + (when (or can-use-selected-window + (not (eq (selected-window) window))) + (throw 'found window)))))) + ;; The buffer is already displayed in some window; use that. (window--display-buffer-1 window-to-use)) ((and special-display-function ;; `special-display-p' returns either t or a list of frame |