From c5dd5a516c9f0f4b622452c42e34e95ca2e2fae5 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Tue, 14 Jun 2011 01:06:26 -0400 Subject: 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. --- etc/themes/light-blue-theme.el | 2 +- etc/themes/misterioso-theme.el | 2 +- etc/themes/tango-dark-theme.el | 2 +- etc/themes/tango-theme.el | 2 +- etc/themes/tsdh-dark-theme.el | 3 +- etc/themes/tsdh-light-theme.el | 3 +- etc/themes/wheatgrass-theme.el | 2 +- etc/themes/wombat-theme.el | 2 +- lisp/ChangeLog | 6 ++++ lisp/cus-theme.el | 73 +++++++++++++++++++++++++++++------------- 10 files changed, 67 insertions(+), 30 deletions(-) diff --git a/etc/themes/light-blue-theme.el b/etc/themes/light-blue-theme.el index 60f9fa8dc9..98c74b268a 100644 --- a/etc/themes/light-blue-theme.el +++ b/etc/themes/light-blue-theme.el @@ -26,7 +26,7 @@ ;;; Code: (deftheme light-blue - "Theme with a light blue backgound.") + "Face colors utilizing a light blue backgound.") (let ((class '((class color) (min-colors 89)))) (custom-theme-set-faces diff --git a/etc/themes/misterioso-theme.el b/etc/themes/misterioso-theme.el index 864d31d9b0..ab4b2bc619 100644 --- a/etc/themes/misterioso-theme.el +++ b/etc/themes/misterioso-theme.el @@ -22,7 +22,7 @@ ;;; Code: (deftheme misterioso - "Theme for faces, using light colors on a dark gray background.") + "Predominantly blue/cyan faces on a dark cyan background.") (let ((class '((class color) (min-colors 89)))) diff --git a/etc/themes/tango-dark-theme.el b/etc/themes/tango-dark-theme.el index a5731ab7d7..b5621d1032 100644 --- a/etc/themes/tango-dark-theme.el +++ b/etc/themes/tango-dark-theme.el @@ -28,7 +28,7 @@ ;;; Code: (deftheme tango-dark - "Theme for faces, based on the Tango palette with a dark background. + "Face colors using the Tango palette (dark background). Basic, Font Lock, Isearch, Gnus, Message, Ediff, Flyspell, Semantic, and Ansi-Color faces are included.") diff --git a/etc/themes/tango-theme.el b/etc/themes/tango-theme.el index 7be50a17f5..c58e003635 100644 --- a/etc/themes/tango-theme.el +++ b/etc/themes/tango-theme.el @@ -28,7 +28,7 @@ ;;; Code: (deftheme tango - "Theme for faces, based on the Tango palette with a light background. + "Face colors using the Tango palette (light background). Basic, Font Lock, Isearch, Gnus, Message, Ediff, Flyspell, Semantic, and Ansi-Color faces are included.") diff --git a/etc/themes/tsdh-dark-theme.el b/etc/themes/tsdh-dark-theme.el index b4fe0b5923..aaa43435dd 100644 --- a/etc/themes/tsdh-dark-theme.el +++ b/etc/themes/tsdh-dark-theme.el @@ -20,7 +20,8 @@ ;;; Code: (deftheme tsdh-dark - "Theme with dark background used and created by Tassilo Horn.") + "Minor tweaks to the Emacs dark-background defaults. +Used and created by Tassilo Horn.") (custom-theme-set-faces 'tsdh-dark diff --git a/etc/themes/tsdh-light-theme.el b/etc/themes/tsdh-light-theme.el index 4eda7a4b7c..e7a2bafb03 100644 --- a/etc/themes/tsdh-light-theme.el +++ b/etc/themes/tsdh-light-theme.el @@ -20,7 +20,8 @@ ;;; Code: (deftheme tsdh-light - "Black on white theme used and created by Tassilo Horn.") + "Minor tweaks to the Emacs white-background defaults. +Used and created by Tassilo Horn.") (custom-theme-set-faces 'tsdh-light diff --git a/etc/themes/wheatgrass-theme.el b/etc/themes/wheatgrass-theme.el index 7fd241c505..3a08bb63d9 100644 --- a/etc/themes/wheatgrass-theme.el +++ b/etc/themes/wheatgrass-theme.el @@ -20,7 +20,7 @@ ;;; Code: (deftheme wheatgrass - "A high-contrast theme with a black background. + "High-contrast green/blue/brown faces on a black background. Basic, Font Lock, Isearch, Gnus, and Message faces are included. The default face foreground is wheat, with other faces in shades of green, brown, and blue.") diff --git a/etc/themes/wombat-theme.el b/etc/themes/wombat-theme.el index 6a16b52ee2..2aa64f894b 100644 --- a/etc/themes/wombat-theme.el +++ b/etc/themes/wombat-theme.el @@ -22,7 +22,7 @@ ;;; Code: (deftheme wombat - "Theme for faces, using easy-on-the eyes colors on a dark gray background. + "Medium-contrast faces with a dark gray background. Adapted, with permission, from a Vim color scheme by Lars H. Nielsen. Basic, Font Lock, Isearch, Gnus, Message, and Ansi-Color faces are included.") diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7dac139c29..2cf968505a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2011-06-14 Chong Yidong + + * cus-theme.el (describe-theme-1): Use custom-theme-p. + (custom-theme-summary): New function. + (customize-themes): Use it. + 2011-06-13 Glenn Morris * cus-dep.el (custom-make-dependencies): Use up command-line-args-left. diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el index 86fb43be72..7f926c85e5 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) -- cgit v1.2.3