If someone fiddles with a face using `set-face-attribute' or similar,
then things seem to work in the initial frame but then look wrong in
frames opened later.
There isn't an obvious way to reset a face to its initial bare state.
So do it the not-obvious way: make a face which is guaranteed to be in
its initial, unsullied state and copy that over the top of the target
face.
;;;--------------------------------------------------------------------------
;;; General fontification.
;;;--------------------------------------------------------------------------
;;; General fontification.
+(make-face 'mdw-virgin-face)
+
(defmacro mdw-define-face (name &rest body)
"Define a face, and make sure it's actually set as the definition."
(declare (indent 1)
(debug 0))
`(progn
(defmacro mdw-define-face (name &rest body)
"Define a face, and make sure it's actually set as the definition."
(declare (indent 1)
(debug 0))
`(progn
+ (copy-face 'mdw-virgin-face ',name)
(defvar ,name ',name)
(put ',name 'face-defface-spec ',body)
(face-spec-set ',name ',body nil)))
(defvar ,name ',name)
(put ',name 'face-defface-spec ',body)
(face-spec-set ',name ',body nil)))