diff options
| -rw-r--r-- | lisp/custom.el | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/lisp/custom.el b/lisp/custom.el index 70b6839db3d..7eaff450c5d 100644 --- a/lisp/custom.el +++ b/lisp/custom.el | |||
| @@ -764,9 +764,17 @@ Return non-nil if the `customized-value' property actually changed." | |||
| 764 | Use the :set function to do so. This is useful for customizable options | 764 | Use the :set function to do so. This is useful for customizable options |
| 765 | that are defined before their standard value can really be computed. | 765 | that are defined before their standard value can really be computed. |
| 766 | E.g. dumped variables whose default depends on run-time information." | 766 | E.g. dumped variables whose default depends on run-time information." |
| 767 | (funcall (or (get symbol 'custom-set) 'set-default) | 767 | (let ((val (car (or (get symbol 'saved-value) |
| 768 | symbol | 768 | (get symbol 'standard-value))))) |
| 769 | (eval (car (or (get symbol 'saved-value) (get symbol 'standard-value)))))) | 769 | (if (default-boundp symbol) |
| 770 | (funcall (or (get symbol 'custom-set) 'set-default) symbol (eval val)) | ||
| 771 | ;; If it has never been set at all, defvar it so as to mark it | ||
| 772 | ;; special, etc (bug#25770). This ignores any :set function, | ||
| 773 | ;; but that is not supposed to be used for initialization anyway. | ||
| 774 | ;; Or we could move this branch to the start, then unconditionally | ||
| 775 | ;; call the custom-set branch. | ||
| 776 | (eval `(defvar ,symbol ,val))))) | ||
| 777 | |||
| 770 | 778 | ||
| 771 | 779 | ||
| 772 | ;;; Custom Themes | 780 | ;;; Custom Themes |