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 | |
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  | 
