summaryrefslogtreecommitdiff
path: root/lisp/cus-theme.el
diff options
context:
space:
mode:
authorChong Yidong <cyd@stupidchicken.com>2011-06-14 01:06:26 -0400
committerChong Yidong <cyd@stupidchicken.com>2011-06-14 01:06:26 -0400
commitc5dd5a516c9f0f4b622452c42e34e95ca2e2fae5 (patch)
tree4a811ae80c86691b1ad0a7ffd454621739a6299e /lisp/cus-theme.el
parentb9958282dc60f74c942f34412123ddc76f7c592e (diff)
downloademacs-c5dd5a516c9f0f4b622452c42e34e95ca2e2fae5.tar.gz
Print theme summaries in *Custom Themes* buffer.
* lisp/cus-theme.el (describe-theme-1): Use custom-theme-p. (custom-theme-summary): New function. (customize-themes): Use it. * etc/themes/light-blue-theme.el: * etc/themes/misterioso-theme.el: * etc/themes/tango-dark-theme.el: * etc/themes/tango-theme.el: * etc/themes/tsdh-dark-theme.el: * etc/themes/tsdh-light-theme.el: * etc/themes/wheatgrass-theme.el: * etc/themes/wombat-theme.el: Tweak summaries for better listability.
Diffstat (limited to 'lisp/cus-theme.el')
-rw-r--r--lisp/cus-theme.el73
1 files changed, 51 insertions, 22 deletions
diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el
index 86fb43be72a..7f926c85e56 100644
--- a/lisp/cus-theme.el
+++ b/lisp/cus-theme.el
@@ -483,25 +483,24 @@ It includes all faces in list FACES."
'help-theme-def fn)
(princ "'"))
(princ ".\n")
- (if (not (memq theme custom-known-themes))
+ (if (custom-theme-p theme)
(progn
- (princ "It is not loaded.")
- ;; Attempt to grab the theme documentation
- (when fn
- (with-temp-buffer
- (insert-file-contents fn)
- (let ((sexp (let ((read-circle nil))
- (condition-case nil
- (read (current-buffer))
- (end-of-file nil)))))
- (and sexp (listp sexp)
- (eq (car sexp) 'deftheme)
- (setq doc (nth 2 sexp)))))))
- (if (custom-theme-enabled-p theme)
- (princ "It is loaded and enabled.")
- (princ "It is loaded but disabled."))
- (setq doc (get theme 'theme-documentation)))
-
+ (if (custom-theme-enabled-p theme)
+ (princ "It is loaded and enabled.")
+ (princ "It is loaded but disabled."))
+ (setq doc (get theme 'theme-documentation)))
+ (princ "It is not loaded.")
+ ;; Attempt to grab the theme documentation
+ (when fn
+ (with-temp-buffer
+ (insert-file-contents fn)
+ (let ((sexp (let ((read-circle nil))
+ (condition-case nil
+ (read (current-buffer))
+ (end-of-file nil)))))
+ (and sexp (listp sexp)
+ (eq (car sexp) 'deftheme)
+ (setq doc (nth 2 sexp)))))))
(princ "\n\nDocumentation:\n")
(princ (if (stringp doc)
doc
@@ -605,26 +604,56 @@ Theme files are named *-theme.el in `"))
(widget-create 'checkbox
:value custom-theme-allow-multiple-selections
:action 'custom-theme-selections-toggle)
- (widget-insert (propertize " Allow more than one theme at a time"
+ (widget-insert (propertize " Select more than one theme at a time"
'face '(variable-pitch (:height 0.9))))
(widget-insert "\n\nAvailable Custom Themes:\n")
- (let (widget)
+ (let ((help-echo "mouse-2: Enable this theme for this session")
+ widget)
(dolist (theme (custom-available-themes))
(setq widget (widget-create 'checkbox
:value (custom-theme-enabled-p theme)
:theme-name theme
+ :help-echo help-echo
:action 'custom-theme-checkbox-toggle))
(push (cons theme widget) custom--listed-themes)
(widget-create-child-and-convert widget 'push-button
:button-face-get 'ignore
:mouse-face-get 'ignore
:value (format " %s" theme)
- :action 'widget-parent-action)
- (widget-insert ?\n)))
+ :action 'widget-parent-action
+ :help-echo help-echo)
+ (widget-insert " -- "
+ (propertize (custom-theme-summary theme)
+ 'face 'shadow)
+ ?\n)))
(goto-char (point-min))
(widget-setup))
+(defun custom-theme-summary (theme)
+ "Return the summary line of THEME."
+ (let (doc)
+ (if (custom-theme-p theme)
+ (setq doc (get theme 'theme-documentation))
+ (let ((fn (locate-file (concat (symbol-name theme) "-theme.el")
+ (custom-theme--load-path)
+ '("" "c"))))
+ (when fn
+ (with-temp-buffer
+ (insert-file-contents fn)
+ (let ((sexp (let ((read-circle nil))
+ (condition-case nil
+ (read (current-buffer))
+ (end-of-file nil)))))
+ (and sexp (listp sexp)
+ (eq (car sexp) 'deftheme)
+ (setq doc (nth 2 sexp))))))))
+ (cond ((null doc)
+ "(no documentation available)")
+ ((string-match ".*" doc)
+ (match-string 0 doc))
+ (t doc))))
+
(defun custom-theme-checkbox-toggle (widget &optional event)
(let ((this-theme (widget-get widget :theme-name)))
(if (widget-value widget)