(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.
This commit is contained in:
parent
9c4b6e94bf
commit
077ad61cf8
1 changed files with 30 additions and 6 deletions
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue