[Top][All Lists]

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

Re: infinite loop when customizing default face

From: Richard Stallman
Subject: Re: infinite loop when customizing default face
Date: Fri, 31 May 2002 01:06:01 -0600 (MDT)

I recognize this as a bug I fixed in the past couple of months.
Does this replacement function fix it?

(Eli, could you put this fix into RC?)

(defun face-set-after-frame-default (frame)
  "Set frame-local faces of FRAME from face specs and resources.
Initialize colors of certain faces from frame parameters."
  (dolist (face (face-list))
    (when (not (equal face 'default))
      (face-spec-set face (face-user-default-spec face) frame)
      (internal-merge-in-global-face face frame)
      (when (and (memq window-system '(x w32 mac))
                 (or (not (boundp 'inhibit-default-face-x-resources))
                     (not (eq face 'default))))
        (make-face-x-resource-internal face frame))))

  ;; Initialize attributes from frame parameters.
  (let ((params '((foreground-color default :foreground)
                  (background-color default :background)
                  (border-color border :background)
                  (cursor-color cursor :background)
                  (scroll-bar-foreground scroll-bar :foreground)
                  (scroll-bar-background scroll-bar :background)
                  (mouse-color mouse :background))))
    (dolist (param params)
      (let ((frame-param (frame-parameter frame (nth 0 param)))
            (face (nth 1 param))
            (attr (nth 2 param)))
        (when (and frame-param
                   ;; Don't override face attributes explicitly
                   ;; specified for new frames.
                   (eq (face-attribute face attr t) 'unspecified))
          (set-face-attribute face frame attr frame-param))))))

reply via email to

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