Subject: bug#9072: 24.0.50; special-display buffer's window is no longer dedicated

From: martin rudalics <[email-masked]>
Date: Thu, 14 Jul 2011 10:36:12 +0200

> 3. Make *Buffer List* be a special-display buffer:
 >
 > M-: (setq special-display-regexps '("[ ]?[*][^*]+[*]"))
 >
 > 4. C-x C-b
 >
 > 5. In *Buffer List*, click a buffer.  It should be shown in a separate
 > frame.  Instead, it is shown in the same frame, taking the place of the
 > *Buffer List* buffer.  The window of *Buffer List* is not dedicated as
 > it should be.
 >
 > This is a regression wrt a build from 2011-06-27, where there was no
 > such problem.

Two typos similar to the ones earlier reported by Tassilo.  I installed
a fix.  Please use the version of `display-buffer-normalize-special'
below until Sean provides new binaries.

martin

(defun display-buffer-normalize-special (&optional args)
   "Return buffer display specifiers for `special-display-frame-alist'."
   (progn ;; <-- reserved for with-no-warnings
     (if (and (listp args) (symbolp (car args)))
	;; Note: `display-buffer' funcalls this so take "(nth 1 args)"
	;; where `special-display-popup-frame' (which uses apply) takes
	;; "(cdr args)".
	`((function ,(car args) ,(nth 1 args)))
       (append
        '((reuse-window nil same 0))
        (when (and (listp args) (cdr (assq 'same-window args)))
	 '((reuse-window same nil nil) (reuse-dedicated . weak)))
        (when (and (listp args)
		  (or (cdr (assq 'same-frame args))
		      (cdr (assq 'same-window args))))
	 '((pop-up-window (largest . nil) (lru . nil))
	   (reuse-window nil nil nil)))
        (unless display-buffer-mark-dedicated
	 ;; Don't make anything created above dedicated unless requested.
	 ;; Otherwise the dedication request below gets in our way.
	 '((dedicate . nil)))
        `((pop-up-frame t)
	 ,(append '(pop-up-frame-alist)
		  (when (listp args) args)
		  special-display-frame-alist)
	 (dedicate . t))))))