diff options
| author | Ken Raeburn <raeburn@raeburn.org> | 2015-10-13 22:06:01 -0400 |
|---|---|---|
| committer | Ken Raeburn <raeburn@raeburn.org> | 2015-10-13 22:12:55 -0400 |
| commit | 9fa9c26e42ddb3f67133bc18112147926bae8a50 (patch) | |
| tree | a7bc2ac4daefb0a1410fb50885d6c394d07d3087 /lisp/faces.el | |
| parent | 85c12310ff9a6721fb1ecbfdf6d89e59a34fb882 (diff) | |
| download | emacs-9fa9c26e42ddb3f67133bc18112147926bae8a50.tar.gz | |
Reduce face-related consing during frame creation.
* faces.el (face--attributes-unspecified): Compute the "unspecified"
attribute list once.
(face-spec-reset-face): Use it instead of building the list.
Diffstat (limited to 'lisp/faces.el')
| -rw-r--r-- | lisp/faces.el | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lisp/faces.el b/lisp/faces.el index 4e7f1a42bff..de8a0b5bcb1 100644 --- a/lisp/faces.el +++ b/lisp/faces.el @@ -1598,6 +1598,13 @@ is given, in which case return its value instead." result no-match-retval)))) +;; When over 80 faces get processed at frame creation time, all but +;; one specifying all attributes as "unspecified", generating this +;; list every time means a lot of consing. +(defconst face--attributes-unspecified + (apply 'append + (mapcar (lambda (x) (list (car x) 'unspecified)) + face-attribute-name-alist))) (defun face-spec-reset-face (face &optional frame) "Reset all attributes of FACE on FRAME to unspecified." @@ -1622,9 +1629,7 @@ is given, in which case return its value instead." "unspecified-fg" "unspecified-bg"))))) ;; For all other faces, unspecify all attributes. - (apply 'append - (mapcar (lambda (x) (list (car x) 'unspecified)) - face-attribute-name-alist))))) + face--attributes-unspecified))) (defun face-spec-set (face spec &optional spec-type) "Set the face spec SPEC for FACE. |
