From 9b9c9e3acbd2285e87e0233d4cfc83c65f2235d1 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Thu, 16 Jun 2011 09:31:51 +0200 Subject: [PATCH] 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). --- lisp/ChangeLog | 6 ++++++ lisp/window.el | 34 ++++++++++++++++------------------ 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 + + * 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 * 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'. -- 2.39.2