summaryrefslogtreecommitdiff
path: root/lisp/window.el
diff options
context:
space:
mode:
authorMartin Rudalics <rudalics@gmx.at>2009-01-04 19:03:09 +0000
committerMartin Rudalics <rudalics@gmx.at>2009-01-04 19:03:09 +0000
commite331bbf3be9e142fcd6d2024d5ec26c31de5b35c (patch)
treeee7f0af349043f9156364c323b8af65e02bac8fd /lisp/window.el
parentc0eb6ac0b1baf5c7f46a4f359367f4e82de7ce37 (diff)
downloademacs-e331bbf3be9e142fcd6d2024d5ec26c31de5b35c.tar.gz
(display-buffer): When a buffer is displayed in the
selected and some other window, and not-this-window is non-nil, try to return that other window instead of popping up a new frame. (Bug#30)
Diffstat (limited to 'lisp/window.el')
-rw-r--r--lisp/window.el14
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