Mercurial > emacs
changeset 66360:fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
(set-face-attribute): Bind it.
(face-set-after-frame-default): Test it.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 24 Oct 2005 00:08:36 +0000 |
parents | 5c93b07e7478 |
children | 856c54127427 |
files | lisp/faces.el |
diffstat | 1 files changed, 23 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/faces.el Sun Oct 23 22:58:33 2005 +0000 +++ b/lisp/faces.el Mon Oct 24 00:08:36 2005 +0000 @@ -33,7 +33,6 @@ (autoload 'xw-defined-colors "x-win")) (defvar help-xref-stack-item) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Font selection. @@ -547,6 +546,9 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defvar inhibit-face-set-after-frame-default nil + "If non-nil, that tells `face-set-after-frame-default' to do nothing.") + (defun set-face-attribute (face frame &rest args) "Set attributes of FACE on FRAME from ARGS. @@ -677,9 +679,12 @@ (if (memq where '(0 t)) (put (or (get face 'face-alias) face) 'face-modified t)) (while args - (internal-set-lisp-face-attribute face (car args) - (purecopy (cadr args)) - where) + ;; Don't recursively set the attributes from the frame's font param + ;; when we update the frame's font param fro the attributes. + (let ((inhibit-face-set-after-frame-default t)) + (internal-set-lisp-face-attribute face (car args) + (purecopy (cadr args)) + where)) (setq args (cdr (cdr args)))))) @@ -1730,23 +1735,23 @@ (delete-frame frame))) frame)) - (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." - (if (face-attribute 'default :font t) - (set-face-attribute 'default frame :font - (face-attribute 'default :font t)) - (set-face-attribute 'default frame :family - (face-attribute 'default :family t)) - (set-face-attribute 'default frame :height - (face-attribute 'default :height t)) - (set-face-attribute 'default frame :slant - (face-attribute 'default :slant t)) - (set-face-attribute 'default frame :weight - (face-attribute 'default :weight t)) - (set-face-attribute 'default frame :width - (face-attribute 'default :width t))) + (unless inhibit-face-set-after-frame-default + (if (face-attribute 'default :font t) + (set-face-attribute 'default frame :font + (face-attribute 'default :font t)) + (set-face-attribute 'default frame :family + (face-attribute 'default :family t)) + (set-face-attribute 'default frame :height + (face-attribute 'default :height t)) + (set-face-attribute 'default frame :slant + (face-attribute 'default :slant t)) + (set-face-attribute 'default frame :weight + (face-attribute 'default :weight t)) + (set-face-attribute 'default frame :width + (face-attribute 'default :width t)))) (dolist (face (face-list)) ;; Don't let frame creation fail because of an invalid face spec. (condition-case ()