emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/custom.el


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/lisp/custom.el
Date: Fri, 19 Apr 2002 03:42:31 -0400

Index: emacs/lisp/custom.el
diff -c emacs/lisp/custom.el:1.50 emacs/lisp/custom.el:1.51
*** emacs/lisp/custom.el:1.50   Sat Jan  5 13:56:56 2002
--- emacs/lisp/custom.el        Fri Apr 19 03:42:31 2002
***************
*** 549,554 ****
--- 549,621 ----
        (set variable value))
      (set-default variable value)))
  
+ (defun custom-quote (sexp)
+   "Quote SEXP iff it is not self quoting."
+   (if (or (memq sexp '(t nil))
+         (keywordp sexp)
+         (and (listp sexp)
+              (memq (car sexp) '(lambda)))
+         (stringp sexp)
+         (numberp sexp)
+         (vectorp sexp)
+ ;;;     (and (fboundp 'characterp)
+ ;;;          (characterp sexp))
+         )
+       sexp
+     (list 'quote sexp)))
+ 
+ (defun customize-mark-to-save (symbol)
+   "Mark SYMBOL for later saving.
+ 
+ If the default value of SYMBOL is different from the standard value, 
+ set the `saved-value' property to a list whose car evaluates to the
+ default value. Otherwise, set it til nil.
+ 
+ To actually save the value, call `custom-save-all'.
+ 
+ Return non-nil iff the `saved-value' property actually changed."
+   (let* ((get (or (get symbol 'custom-get) 'default-value))
+        (value (funcall get symbol))
+        (saved (get symbol 'saved-value))
+        (standard (get symbol 'standard-value))
+        (comment (get symbol 'customized-variable-comment)))
+     ;; Save default value iff different from standard value.
+     (if (or (null standard)
+           (not (equal value (condition-case nil
+                                 (eval (car standard))
+                               (error nil)))))
+       (put symbol 'saved-value (list (custom-quote value)))
+       (put symbol 'saved-value nil))
+     ;; Clear customized information (set, but not saved).
+     (put symbol 'customized-value nil)
+     ;; Save any comment that might have been set.
+     (when comment
+       (put symbol 'saved-variable-comment comment))
+     (not (equal saved (get symbol 'saved-value)))))
+ 
+ (defun customize-mark-as-set (symbol)
+   "Mark current value of SYMBOL as being set from customize.
+ 
+ If the default value of SYMBOL is different from the saved value if any, 
+ or else if it is different from the standard value, set the
+ `customized-value' property to a list whose car evaluates to the 
+ default value. Otherwise, set it til nil.
+ 
+ Return non-nil iff the `customized-value' property actually changed."
+   (let* ((get (or (get symbol 'custom-get) 'default-value))
+        (value (funcall get symbol))
+        (customized (get symbol 'customized-value))
+        (old (or (get symbol 'saved-value) (get symbol 'standard-value))))
+     ;; Mark default value as set iff different from old value.
+     (if (or (null old)
+           (not (equal value (condition-case nil 
+                                 (eval (car old))
+                               (error nil)))))
+       (put symbol 'customized-value (list (custom-quote value)))
+       (put symbol 'customized-value nil))
+     ;; Changed?
+     (not (equal customized (get symbol 'customized-value)))))
+ 
  ;;; The End.
  
  ;; Process the defcustoms for variables loaded before this file.



reply via email to

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