Mercurial > emacs
changeset 63928:e559c2c766bc
(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.
author | Luc Teirlinck <teirllm@auburn.edu> |
---|---|
date | Sat, 02 Jul 2005 22:53:04 +0000 |
parents | 7f7d0de05845 |
children | 7b7a48be14e2 |
files | lisp/cus-theme.el |
diffstat | 1 files changed, 30 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/cus-theme.el Sat Jul 02 22:52:27 2005 +0000 +++ b/lisp/cus-theme.el Sat Jul 02 22:53:04 2005 +0000 @@ -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 @@ (bury-buffer)) "Bury Buffer") (widget-insert "\n") - (use-local-map widget-keymap) (widget-setup)) (defun custom-theme-write (&rest ignore) @@ -90,6 +109,10 @@ (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 @@ (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.