Improve cohabitation of pop-up-frames and second argument of display-buffer (bug#8865).

* 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).
This commit is contained in:
Martin Rudalics 2011-06-16 09:31:51 +02:00
parent 2b8c5660b7
commit 9b9c9e3acb
2 changed files with 22 additions and 18 deletions

View file

@ -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.

View file

@ -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'.