[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: C-M-x should reset defface forms
From: |
Juri Linkov |
Subject: |
Re: C-M-x should reset defface forms |
Date: |
Mon, 07 Jun 2004 09:33:33 +0300 |
User-agent: |
Gnus/5.110002 (No Gnus v0.2) Emacs/21.3.50 (gnu/linux) |
Richard Stallman <address@hidden> writes:
> Your change is not limited to C-M-x. It makes ALL evaluation of
> a defface reinitialize the face. That's a change I don't think
> we want to make.
To limit it only to C-M-x, changes can be made only in `eval-defun'
instead of `custom-declare-face'.
Index: lisp/emacs-lisp/lisp-mode.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/emacs-lisp/lisp-mode.el,v
retrieving revision 1.159
diff -u -r1.159 lisp-mode.el
--- lisp/emacs-lisp/lisp-mode.el 29 May 2004 15:33:30 -0000 1.159
+++ lisp/emacs-lisp/lisp-mode.el 6 Jun 2004 23:54:45 -0000
@@ -589,6 +589,13 @@
;; Force variable to be bound.
(set-default (eval (nth 1 form)) (eval (nth 1 (nth 2 form))))
form)
+ ;; `defface' is macroexpanded to `custom-declare-face'.
+ ((eq (car form) 'custom-declare-face)
+ ;; Clear defface spec.
+ (put (eval (nth 1 form)) 'face-defface-spec nil)
+ (setq face-new-frame-defaults
+ (assq-delete-all (eval (nth 1 form)) face-new-frame-defaults))
+ form)
((eq (car form) 'progn)
(cons 'progn (mapcar 'eval-defun-1 (cdr form))))
(t form)))
Index: lisp/emacs-lisp/edebug.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/emacs-lisp/edebug.el,v
retrieving revision 3.68
diff -u -r3.68 edebug.el
--- lisp/emacs-lisp/edebug.el 28 May 2004 21:03:53 -0000 3.68
+++ lisp/emacs-lisp/edebug.el 6 Jun 2004 23:54:45 -0000
@@ -507,7 +507,13 @@
((and (eq (car form) 'defcustom)
(default-boundp (nth 1 form)))
;; Force variable to be bound.
- (set-default (nth 1 form) (eval (nth 2 form)))))
+ (set-default (nth 1 form) (eval (nth 2 form))))
+ ((eq (car form) 'defface)
+ ;; Clear defface spec.
+ (put (nth 1 form) 'face-defface-spec nil)
+ (setq face-new-frame-defaults
+ (assq-delete-all (nth 1 form) face-new-frame-defaults))
+ form))
(setq edebug-result (eval form))
(if (not edebugging)
(princ edebug-result)
--
Juri Linkov
http://www.jurta.org/emacs/