diff options
author | Chong Yidong <cyd@stupidchicken.com> | 2010-10-11 23:10:21 -0400 |
---|---|---|
committer | Chong Yidong <cyd@stupidchicken.com> | 2010-10-11 23:10:21 -0400 |
commit | 6b09b5d118f2870e54a385f6ecd03cbf4508e120 (patch) | |
tree | 2c4523afdc963fe1628268773be8f46bff1c4a9a /lisp/cus-face.el | |
parent | 57b6ae53514ccef149507cfd5f53d2e418810d30 (diff) | |
download | emacs-6b09b5d118f2870e54a385f6ecd03cbf4508e120.tar.gz emacs-6b09b5d118f2870e54a385f6ecd03cbf4508e120.tar.bz2 emacs-6b09b5d118f2870e54a385f6ecd03cbf4508e120.zip |
New interface for choosing Custom themes.
* lisp/cus-edit.el (custom--initialize-widget-variables): New function.
(Custom-mode): Use it.
* lisp/cus-face.el (custom-theme-set-faces): Remove dead code. Obey
custom--inhibit-theme-enable.
* lisp/cus-theme.el (describe-theme, customize-themes)
(custom-theme-save): New commands.
(custom-new-theme-mode-map): Bind C-x C-s.
(custom-new-theme-mode): Use custom--initialize-widget-variables.
(customize-create-theme): New optional arg THEME.
(custom-theme-revert): Use it.
(custom-theme-visit-theme): Remove dead code.
(custom-theme-merge-theme): Use custom-available-themes.
(custom-theme-write): Make interactive.
(custom-theme-write): Use custom-theme-name-valid-p.
(describe-theme-1, custom-theme-choose-revert)
(custom-theme-checkbox-toggle, custom-theme-selections-toggle):
New funs.
(custom-theme-allow-multiple-selections): New option.
(custom-theme-choose-mode): New major mode.
* lisp/custom.el (custom-theme-set-variables): Remove dead code. Obey
custom--inhibit-theme-enable.
(custom--inhibit-theme-enable): New var.
(provide-theme): Obey it.
(load-theme): Replace load with manual read/eval, in order to
check for correctness. Use custom-theme-name-valid-p.
(custom-theme-name-valid-p): New function.
(custom-available-themes): Use it.
* lisp/help-mode.el (help-theme-def, help-theme-edit): New buttons.
Diffstat (limited to 'lisp/cus-face.el')
-rw-r--r-- | lisp/cus-face.el | 62 |
1 files changed, 26 insertions, 36 deletions
diff --git a/lisp/cus-face.el b/lisp/cus-face.el index f6a07507f2c..1a24429e1e8 100644 --- a/lisp/cus-face.el +++ b/lisp/cus-face.el @@ -319,42 +319,32 @@ SPEC itself is saved in FACE property `saved-face' and it is stored in FACE's list property `theme-face' \(using `custom-push-theme')." (custom-check-theme theme) (let ((immediate (get theme 'theme-immediate))) - (while args - (let ((entry (car args))) - (if (listp entry) - (let ((face (nth 0 entry)) - (spec (nth 1 entry)) - (now (nth 2 entry)) - (comment (nth 3 entry)) - oldspec) - ;; If FACE is actually an alias, customize the face it - ;; is aliased to. - (if (get face 'face-alias) - (setq face (get face 'face-alias))) - - (setq oldspec (get face 'theme-face)) - (when (not (and oldspec (eq 'user (caar oldspec)))) - (put face 'saved-face spec) - (put face 'saved-face-comment comment)) - - (custom-push-theme 'theme-face face theme 'set spec) - (when (or now immediate) - (put face 'force-face (if now 'rogue 'immediate))) - (when (or now immediate (facep face)) - (unless (facep face) - (make-empty-face face)) - (put face 'face-comment comment) - (put face 'face-override-spec nil) - (face-spec-set face spec t)) - (setq args (cdr args))) - ;; Old format, a plist of FACE SPEC pairs. - (let ((face (nth 0 args)) - (spec (nth 1 args))) - (if (get face 'face-alias) - (setq face (get face 'face-alias))) - (put face 'saved-face spec) - (custom-push-theme 'theme-face face theme 'set spec)) - (setq args (cdr (cdr args)))))))) + (dolist (entry args) + (unless (listp entry) + (error "Incompatible Custom theme spec")) + (let ((face (car entry)) + (spec (nth 1 entry))) + ;; If FACE is actually an alias, customize the face it + ;; is aliased to. + (if (get face 'face-alias) + (setq face (get face 'face-alias))) + (custom-push-theme 'theme-face face theme 'set spec) + (unless custom--inhibit-theme-enable + ;; Now set the face spec. + (let ((now (nth 2 entry)) + (comment (nth 3 entry)) + (oldspec (get face 'theme-face))) + (when (not (and oldspec (eq 'user (caar oldspec)))) + (put face 'saved-face spec) + (put face 'saved-face-comment comment)) + (when (or now immediate) + (put face 'force-face (if now 'rogue 'immediate))) + (when (or now immediate (facep face)) + (unless (facep face) + (make-empty-face face)) + (put face 'face-comment comment) + (put face 'face-override-spec nil) + (face-spec-set face spec t)))))))) ;; XEmacs compability function. In XEmacs, when you reset a Custom ;; Theme, you have to specify the theme to reset it to. We just apply |