bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

list-faces-display imposes its own background, doesn't respect special-d


From: Drew Adams
Subject: list-faces-display imposes its own background, doesn't respect special-display-frame-alist
Date: Tue, 23 Oct 2007 12:53:15 -0700

emacs -Q

Evaluate these sexps:

(setq special-display-regexps '("[ ]?[*][^*]+[*]"))

(setq special-display-frame-alist
      '((foreground-color . "Black")
        (background-color . "LightSteelBlue")))

(setq pop-up-frames t)

(defun special-display-popup-frame (buffer &optional args)
  "Display BUFFER in its own frame, reusing an existing window if any.
Return the window chosen.  Window is not selected within its frame.

If a new frame is needed, then `make-frame' is called to create it,
with BUFFER as the current buffer.

If ARGS is an alist, use it as a list of frame parameter specs.
If ARGS is a list whose car is a symbol, use (car ARGS) as a function
to do the work.  Pass it BUFFER as first arg, and (cdr ARGS) as the
rest of its args."
  (if (and args (symbolp (car args)))
      (let* ((window (apply (car args) buffer (cdr args)))
             (frame (window-frame window)))
        (when (fboundp 'fit-frame) (fit-frame (window-frame window)))
        (raise-frame frame)
        window)                         ; Return the window.
    (let ((window (get-buffer-window buffer 0)))
      (or
       ;; If we have a window already, make it visible.
       (when window
         (let ((frame (window-frame window)))
           (make-frame-visible frame)
           (raise-frame frame)
           (when (fboundp 'fit-frame) (fit-frame frame))
           window))                     ; Return the window.
       ;; Reuse the current window if the user requested it.
       (when (cdr (assq 'same-window args))
         (condition-case nil
             (progn (switch-to-buffer buffer) (selected-window))
           (error nil)))
       ;; Stay on the same frame if requested.
       (when (or (cdr (assq 'same-frame args)) (cdr (assq 'same-window
args)))
         (let* ((pop-up-frames nil) (pop-up-windows t)
                special-display-regexps special-display-buffer-names
                (window (display-buffer buffer)))
           ;; Only do it if this is a new window:
           ;; (set-window-dedicated-p window t)
           window))                     ; Return the window.

       ;; If no window yet, make one in a new frame.
       (let ((frame (with-current-buffer buffer
                      (make-frame (append args
special-display-frame-alist)))))
         (when (and (fboundp 'fit-frame)
                    (not (memq 'fit-frame after-make-frame-functions)))
           (with-current-buffer buffer (fit-frame frame)))
         (set-window-buffer (frame-selected-window frame) buffer)
         (set-window-dedicated-p (frame-selected-window frame) t)
         (frame-selected-window frame)))))) ; Return the window.

Try C-h f setq - no problem. The frame background is LightSteelBlue.

Try M-x list-faces-display. The frame background, or at least the
background of buffer *Faces*, is white. The frame background appears
to be LightSteelBlue, which is correct, but that only shows in the
fringe and the minibuffer. (So, for a frame without minibuffer and
fringe, no LightSteelBlue background is seen.

`list-faces-display' should not impose a special background for its
window/buffer. (And how does it do that, anyway?)


In GNU Emacs 22.1.1 (i386-mingw-nt5.1.2600)
 of 2007-06-02 on RELEASE
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (3.4) --cflags -Ic:/gnuwin32/include'

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: ENU
  locale-coding-system: cp1252
  default-enable-multibyte-characters: t

Major mode: Emacs-Lisp

Minor modes in effect:
  encoded-kbd-mode: t
  tooltip-mode: t
  tool-bar-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  unify-8859-on-encoding-mode: t
  utf-translate-cjk-mode: t
  auto-compression-mode: t
  line-number-mode: t

Recent input:
<help-echo> C-x C-f o o o . e l <return> <help-echo>
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo>
<help-echo> M-x l o a d - f <return> <return> C-h f
<return> <switch-frame> C-x k <return> M-x l i s d
t - <backspace> <backspace> <backspace> t - f a c e
<return> <switch-frame> C-x k C-g <help-echo> <help-echo>
<switch-frame> <help-echo> <help-echo> <help-echo>
<help-echo> <help-echo> <help-echo> <menu-bar> <help-menu>
<report-emacs-bug>

Recent messages:
("C:\\Emacs-22.1\\bin\\emacs.exe" "-Q" "--debug-init" "C:\\drews-lisp-20")
Loading encoded-kb...done
For information about the GNU Project and its goals, type C-h C-p.
Loading dired...
Loading regexp-opt...done
Loading dired...done
Loading c:/drews-lisp-20/ooo.el (source)...done
Loading help-fns...done
Quit
Loading emacsbug...done





reply via email to

[Prev in Thread] Current Thread [Next in Thread]