emacs-devel
[Top][All Lists]
Advanced

[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/





reply via email to

[Prev in Thread] Current Thread [Next in Thread]