]> git.eshelyaron.com Git - emacs.git/commitdiff
Retain documentation string when customizing theme
authorChristopher League <league@contrapunctus.net>
Sat, 3 Jul 2021 13:46:28 +0000 (10:46 -0300)
committerMauro Aranda <maurooaranda@gmail.com>
Sat, 3 Jul 2021 13:46:28 +0000 (10:46 -0300)
* lisp/cus-theme.el (customize-create-theme): When editing an existing
theme, load its doc string into the description widget, instead of
replacing it with a date stamp (Bug#49274).

lisp/cus-theme.el

index dfa22264037baa1882088d86b8b52d5bd5a73f4b..f4885d0f52b6e828a683c11b7cb4eb61d23da6e8 100644 (file)
@@ -108,60 +108,16 @@ named *Custom Theme*."
     (unless (y-or-n-p "Include basic face customizations in this theme? ")
       (setq custom-theme--listed-faces nil)))
 
-  (if (eq theme 'user)
-      (widget-insert "This buffer contains all the Custom settings you have made.
-You can convert them into a new custom theme, and optionally
-remove them from your saved Custom file.\n\n"))
-
-  (widget-create 'push-button
-                :tag " Visit Theme "
-                :help-echo "Insert the settings of a pre-defined theme."
-                :action (lambda (_widget &optional _event)
-                           (call-interactively #'custom-theme-visit-theme)))
-  (widget-insert "  ")
-  (widget-create 'push-button
-                :tag " Merge Theme "
-                :help-echo "Merge in the settings of a pre-defined theme."
-                :action (lambda (_widget &optional _event)
-                           (call-interactively #'custom-theme-merge-theme)))
-  (widget-insert "  ")
-  (widget-create 'push-button
-                :tag " Revert "
-                :help-echo "Revert this buffer to its original state."
-                :action (lambda (&rest ignored) (revert-buffer)))
-
-  (widget-insert "\n\nTheme name : ")
-  (setq custom-theme-name
-       (widget-create 'editable-field
-                      :value (if (and theme (not (eq theme 'user)))
-                                 (symbol-name theme)
-                               "")))
-  (widget-insert "Description: ")
-  (setq custom-theme-description
-       (widget-create 'text
-                      :value (format-time-string "Created %Y-%m-%d.")))
-  (widget-create 'push-button
-                 :notify #'custom-theme-write
-                " Save Theme ")
-  (when (eq theme 'user)
-    (setq custom-theme--migrate-settings t)
-    (widget-insert "  ")
-    (widget-create 'checkbox
-                  :value custom-theme--migrate-settings
-                  :action (lambda (widget &optional event)
-                            (when (widget-value widget)
-                              (widget-toggle-action widget event)
-                              (setq custom-theme--migrate-settings
-                                    (widget-value widget)))))
-    (widget-insert (propertize " Remove saved theme settings from Custom save file."
-                              'face '(variable-pitch (:height 0.9)))))
-
   (let (vars values faces face-specs)
 
     ;; Load the theme settings.
     (when theme
-      (unless (eq theme 'user)
-       (load-theme theme nil t))
+      (if (eq theme 'user)
+          (widget-insert "This buffer contains all the Custom settings you have made.
+You can convert them into a new custom theme, and optionally
+remove them from your saved Custom file.\n\n")
+        (load-theme theme nil t))
+
       (dolist (setting (get theme 'theme-settings))
        (if (eq (car setting) 'theme-value)
            (progn (push (nth 1 setting) vars)
@@ -169,6 +125,50 @@ remove them from your saved Custom file.\n\n"))
          (push (nth 1 setting) faces)
          (push (nth 3 setting) face-specs))))
 
+    (widget-create 'push-button
+                  :tag " Visit Theme "
+                  :help-echo "Insert the settings of a pre-defined theme."
+                  :action (lambda (_widget &optional _event)
+                             (call-interactively #'custom-theme-visit-theme)))
+    (widget-insert "  ")
+    (widget-create 'push-button
+                  :tag " Merge Theme "
+                  :help-echo "Merge in the settings of a pre-defined theme."
+                  :action (lambda (_widget &optional _event)
+                             (call-interactively #'custom-theme-merge-theme)))
+    (widget-insert "  ")
+    (widget-create 'push-button
+                  :tag " Revert "
+                  :help-echo "Revert this buffer to its original state."
+                  :action (lambda (&rest ignored) (revert-buffer)))
+
+    (widget-insert "\n\nTheme name : ")
+    (setq custom-theme-name
+         (widget-create 'editable-field
+                        :value (if (and theme (not (eq theme 'user)))
+                                   (symbol-name theme)
+                                 "")))
+    (widget-insert "Description: ")
+    (setq custom-theme-description
+          (widget-create 'text :format "%v"
+                         :value (or (get theme 'theme-documentation)
+                                    (format-time-string "Created %Y-%m-%d."))))
+    (widget-create 'push-button
+                   :notify #'custom-theme-write
+                   " Save Theme ")
+    (when (eq theme 'user)
+      (setq custom-theme--migrate-settings t)
+      (widget-insert "  ")
+      (widget-create 'checkbox
+                    :value custom-theme--migrate-settings
+                    :action (lambda (widget &optional event)
+                              (when (widget-value widget)
+                                (widget-toggle-action widget event)
+                                (setq custom-theme--migrate-settings
+                                      (widget-value widget)))))
+      (widget-insert (propertize " Remove saved theme settings from Custom save file."
+                                'face '(variable-pitch (:height 0.9)))))
+
     ;; If THEME is non-nil, insert all of that theme's faces.
     ;; Otherwise, insert those in `custom-theme--listed-faces'.
     (widget-insert "\n\n  Theme faces:\n ")