summaryrefslogtreecommitdiff
path: root/lisp/cus-theme.el
diff options
context:
space:
mode:
authorLuc Teirlinck <teirllm@auburn.edu>2005-07-02 22:53:04 +0000
committerLuc Teirlinck <teirllm@auburn.edu>2005-07-02 22:53:04 +0000
commit077ad61cf82241450fd11d80b348a171a031d447 (patch)
tree1bace8eabc25a9a8b4767c5466116e3371de2dcb /lisp/cus-theme.el
parent9c4b6e94bf6c993cb1ecea4ebd9f683c9b4c63fc (diff)
downloademacs-077ad61cf82241450fd11d80b348a171a031d447.tar.gz
emacs-077ad61cf82241450fd11d80b348a171a031d447.tar.bz2
emacs-077ad61cf82241450fd11d80b348a171a031d447.zip
(custom-new-theme-mode): New function.
(custom-theme-name, custom-theme-variables, custom-theme-faces) (custom-theme-description): Add compiler defvars. (customize-create-theme): Add doc to the "*New Custom Theme*" buffer. Use `custom-new-theme-mode'. (custom-theme-write): Put the created buffer in emacs-lisp-mode and save it to the `custom-theme-directory'. Make this the default directory of the buffer.
Diffstat (limited to 'lisp/cus-theme.el')
-rw-r--r--lisp/cus-theme.el36
1 files changed, 30 insertions, 6 deletions
diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el
index 41240303037..a40b40aabf2 100644
--- a/lisp/cus-theme.el
+++ b/lisp/cus-theme.el
@@ -31,6 +31,18 @@
(eval-when-compile
(require 'wid-edit))
+(define-derived-mode custom-new-theme-mode nil "New-Theme"
+ "Major mode for the buffer created by `customize-create-theme'.
+Do not call this mode function yourself. It is only meant for internal
+use by `customize-create-theme'."
+ (set-keymap-parent custom-new-theme-mode-map widget-keymap))
+(put 'custom-new-theme-mode 'mode-class 'special)
+
+(defvar custom-theme-name)
+(defvar custom-theme-variables)
+(defvar custom-theme-faces)
+(defvar custom-theme-description)
+
;;;###autoload
(defun customize-create-theme ()
"Create a custom theme."
@@ -38,15 +50,23 @@
(if (get-buffer "*New Custom Theme*")
(kill-buffer "*New Custom Theme*"))
(switch-to-buffer "*New Custom Theme*")
- (kill-all-local-variables)
+ (let ((inhibit-read-only t))
+ (erase-buffer))
+ (custom-new-theme-mode)
(make-local-variable 'custom-theme-name)
(make-local-variable 'custom-theme-variables)
(make-local-variable 'custom-theme-faces)
(make-local-variable 'custom-theme-description)
- (let ((inhibit-read-only t))
- (erase-buffer))
(widget-insert "This buffer helps you write a custom theme elisp file.
-This will help you share your customizations with other people.\n\n")
+This will help you share your customizations with other people.
+
+Just insert the names of all variables and faces you want the theme
+to include. Then clicking mouse-2 or pressing RET on the [Done] button
+will write a theme file that sets all these variables and faces to their
+current global values. It will write that file into the directory given
+by the variable `custom-theme-directory', usually \"~/.emacs.d/\".
+
+To undo all your edits to the buffer, use the [Reset] button.\n\n")
(widget-insert "Theme name: ")
(setq custom-theme-name
(widget-create 'editable-field
@@ -81,7 +101,6 @@ This will help you share your customizations with other people.\n\n")
(bury-buffer))
"Bury Buffer")
(widget-insert "\n")
- (use-local-map widget-keymap)
(widget-setup))
(defun custom-theme-write (&rest ignore)
@@ -90,6 +109,10 @@ This will help you share your customizations with other people.\n\n")
(variables (widget-value custom-theme-variables))
(faces (widget-value custom-theme-faces)))
(switch-to-buffer (concat name "-theme.el"))
+ (emacs-lisp-mode)
+ (unless (file-exists-p custom-theme-directory)
+ (make-directory (file-name-as-directory custom-theme-directory) t))
+ (setq default-directory custom-theme-directory)
(setq buffer-file-name (expand-file-name (concat name "-theme.el")))
(let ((inhibit-read-only t))
(erase-buffer))
@@ -100,7 +123,8 @@ This will help you share your customizations with other people.\n\n")
(insert ")\n")
(custom-theme-write-variables name variables)
(custom-theme-write-faces name faces)
- (insert "\n(provide-theme '" name ")\n")))
+ (insert "\n(provide-theme '" name ")\n")
+ (save-buffer)))
(defun custom-theme-write-variables (theme vars)
"Write a `custom-theme-set-variables' command for THEME.