]> git.eshelyaron.com Git - emacs.git/commitdiff
(set-face-attribute, face-spec-reset-face)
authorGerd Moellmann <gerd@gnu.org>
Tue, 5 Sep 2000 15:54:58 +0000 (15:54 +0000)
committerGerd Moellmann <gerd@gnu.org>
Tue, 5 Sep 2000 15:54:58 +0000 (15:54 +0000)
(face-spec-set): Avoid consing by removing calls to `apply'.

lisp/faces.el

index c95a8ef831db59a5be894ec1202dfbc3c21765f9..aaf5c1a5e968ab62cd5cf1f06a48ee9f111ca7fb 100644 (file)
@@ -550,9 +550,16 @@ like an underlying face would be, with higher priority than underlying faces."
   (cond ((null frame)
         ;; Change face on all frames.
         (dolist (frame (frame-list))
-          (apply #'set-face-attribute face frame args))
+          (let ((list args))
+            (while list
+              (internal-set-lisp-face-attribute face (car list)
+                                                (cadr list) frame)
+              (setq list (cdr (cdr list))))))
         ;; Record that as a default for new frames.
-        (apply #'set-face-attribute face t args))
+        (while args
+          (internal-set-lisp-face-attribute face (car args)
+                                            (cadr args) t)
+          (setq args (cdr (cdr args)))))
        (t
         (while args
           (internal-set-lisp-face-attribute face (car args)
@@ -1168,21 +1175,19 @@ If FRAME is nil, the current FRAME is used."
 
 (defun face-spec-reset-face (face &optional frame)
   "Reset all attributes of FACE on FRAME to unspecified."
-  (let ((attrs face-attribute-name-alist)
-       params)
+  (let ((attrs face-attribute-name-alist))
     (while attrs
       (let ((attr-and-name (car attrs)))
-       (setq params (cons (car attr-and-name) (cons 'unspecified params))))
-      (setq attrs (cdr attrs)))
-    (apply #'set-face-attribute face frame params)))
+       (set-face-attribute face frame (car attr-and-name) 'unspecified))
+      (setq attrs (cdr attrs)))))
 
 
 (defun face-spec-set (face spec &optional frame)
   "Set FACE's attributes according to the first matching entry in SPEC.
 FRAME is the frame whose frame-local face is set.  FRAME nil means
 do it on all frames.  See `defface' for information about SPEC."
-  (let ((attrs (face-spec-choose spec frame))
-       params)
+  (let ((attrs (face-spec-choose spec frame)))
+    (face-spec-reset-face face frame)
     (while attrs
       (let ((attribute (car attrs))
            (value (car (cdr attrs))))
@@ -1193,10 +1198,8 @@ do it on all frames.  See `defface' for information about SPEC."
          (t (unless (assq attribute face-x-resources)
               (setq attribute nil))))
        (when attribute
-         (setq params (cons attribute (cons value params)))))
-      (setq attrs (cdr (cdr attrs))))
-    (face-spec-reset-face face frame)
-    (apply #'set-face-attribute face frame params)))
+         (set-face-attribute face frame attribute value)))
+      (setq attrs (cdr (cdr attrs))))))
 
 
 (defun face-attr-match-p (face attrs &optional frame)