]> git.eshelyaron.com Git - emacs.git/commitdiff
(customize-mark-to-save, customize-mark-as-set)
authorMiles Bader <miles@gnu.org>
Fri, 19 Apr 2002 07:43:43 +0000 (07:43 +0000)
committerMiles Bader <miles@gnu.org>
Fri, 19 Apr 2002 07:43:43 +0000 (07:43 +0000)
(custom-quote): Moved here from `cus-edit.el'.

lisp/ChangeLog
lisp/custom.el

index 27ef45053185c96fd2c229beb65b49bb708347ba..6bce5295b7bcf94ae0a0d75de2c5c6267d45f624 100644 (file)
@@ -1,3 +1,10 @@
+2002-04-19  Miles Bader  <miles@gnu.org>
+
+       * custom.el (customize-mark-to-save, customize-mark-as-set)
+       (custom-quote): Moved here from `cus-edit.el'.
+       * cus-edit.el (customize-mark-to-save, customize-mark-as-set)
+       (custom-quote): Moved to `custom.el'.
+
 2002-04-18  Richard M. Stallman  <rms@gnu.org>
 
        * facemenu.el (list-text-properties-at): Command deleted.
@@ -61,7 +68,7 @@
 
        * term.el (term-emulate-terminal): Fix last change.
 
-2002-04-16  Pavel Jan\e,Bm\e(Bk  <Pavel@Janik.cz>
+2002-04-16  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
 
        * bindings.el (mode-line-mode-menu): Update names to reflect
        latest changes.
index f7c0e0e0ee9e38fac0a862da1411b68969a968a6..cae8450c968c568b33748ae5cf22872014553bc6 100644 (file)
@@ -549,6 +549,73 @@ this sets the local binding in that buffer instead."
        (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.