(inhibit-face-set-after-frame-default): New variable.

(set-face-attribute): Bind it.
(face-set-after-frame-default): Test it.
This commit is contained in:
Richard M. Stallman 2005-10-24 00:10:02 +00:00
parent 96664fc024
commit 1df6425458
2 changed files with 27 additions and 18 deletions

View file

@ -4,6 +4,10 @@
2005-10-23 Richard M. Stallman <rms@gnu.org>
* faces.el (inhibit-face-set-after-frame-default): New variable.
(set-face-attribute): Bind it.
(face-set-after-frame-default): Test it.
* help-fns.el (describe-simplify-lib-file-name): New function.
(describe-function-1, describe-variable): Use it.

View file

@ -33,7 +33,6 @@
(autoload 'xw-defined-colors "x-win"))
(defvar help-xref-stack-item)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Font selection.
@ -547,6 +546,9 @@ If FACE is a face-alias, get the documentation for the target face."
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(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 @@ like an underlying face would be, with higher priority than underlying faces."
(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 @@ Value is the new frame created."
(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 ()