summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/ChangeLog6
-rw-r--r--lisp/window.el34
2 files changed, 22 insertions, 18 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index d2d44793366..b4b726c7407 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,9 @@
+2011-06-16 Martin Rudalics <rudalics@gmx.at>
+
+ * window.el (display-buffer-normalize-specifiers-1): Respect
+ current value of pop-up-frames for most reasonable values of
+ second argument of display-buffer (Bug#8865).
+
2011-06-15 Stefan Monnier <monnier@iro.umontreal.ca>
* pcmpl-rpm.el (pcomplete/rpm): Minor simplification.
diff --git a/lisp/window.el b/lisp/window.el
index 5493893d4c1..1661fedfe25 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -3453,9 +3453,8 @@ specific buffers."
;; (bw-finetune wins)
;; (message "Done in %d rounds" round)
))
-
-
+;;; Displaying buffers.
(defconst display-buffer-default-specifiers
'((reuse-window nil same visible)
(pop-up-window (largest . nil) (lru . nil))
@@ -4909,9 +4908,12 @@ BUFFER-OR-NAME and return that buffer."
(defun display-buffer-normalize-specifiers-1 (specifiers)
"Subroutine of `display-buffer-normalize-specifiers'.
SPECIFIERS is the SPECIFIERS argument of `display-buffer'."
- (let (normalized)
+ (let (normalized entry)
(cond
+ ((not specifiers)
+ nil)
((listp specifiers)
+ ;; If SPECIFIERS is a list, we assume it is a list of specifiers.
(dolist (specifier specifiers)
(cond
((consp specifier)
@@ -4924,21 +4926,17 @@ SPECIFIERS is the SPECIFIERS argument of `display-buffer'."
(dolist (item (cdr entry))
(setq normalized (cons item normalized)))))))
;; Reverse list.
- (setq normalized (nreverse normalized)))
- ;; The two cases below must come from the SPECIFIERS argument of
- ;; `display-buffer'.
- ((eq specifiers 't)
- ;; Historically t means "other window". Eventually we should get
- ;; rid of this.
- (setq normalized
- (cdr (assq 'other-window display-buffer-macro-specifiers))
- normalized))
- ((symbolp specifiers)
- ;; We allow scalar specifiers in calls of `display-buffer'.
- (let ((entry (assq specifiers display-buffer-macro-specifiers)))
- (when entry (setq normalized (cdr entry))))))
-
- normalized))
+ (nreverse normalized))
+ ((and (not (eq specifiers 'other-window))
+ (setq entry (assq specifiers display-buffer-macro-specifiers)))
+ ;; A macro specifier.
+ (cdr entry))
+ ((memq pop-up-frames '(nil unset))
+ ;; Pop up a new window.
+ (cdr (assq 'other-window display-buffer-macro-specifiers)))
+ (t
+ ;; Pop up a new frame.
+ (cdr (assq 'other-frame display-buffer-macro-specifiers))))))
(defun display-buffer-normalize-specifiers-2 (&optional buffer-or-name)
"Subroutine of `display-buffer-normalize-specifiers'.