annotate lisp/cus-face.el @ 85682:919974c09488

(struct frame): Move all bit fields after the first bit field to take advantage of the available space. Group all the chars together to reduce wasted space due to padding.
author Dan Nicolaescu <dann@ics.uci.edu>
date Fri, 26 Oct 2007 18:09:36 +0000
parents f8c971a5c815
children 0ef4914a2852 14c4a6aac623
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 33939
diff changeset
1 ;;; cus-face.el --- customization support for faces
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
2 ;;
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64219
diff changeset
3 ;; Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004,
75347
e3694f1cb928 Add 2007 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 68651
diff changeset
4 ;; 2005, 2006, 2007 Free Software Foundation, Inc.
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
5 ;;
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
6 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
7 ;; Keywords: help, faces
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
8
17524
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
9 ;; This file is part of GNU Emacs.
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
10
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
78236
9355f9b7bbff Switch license to GPLv3 or later.
Glenn Morris <rgm@gnu.org>
parents: 75347
diff changeset
13 ;; the Free Software Foundation; either version 3, or (at your option)
17524
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
14 ;; any later version.
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
15
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
19 ;; GNU General Public License for more details.
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
20
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
21 ;; You should have received a copy of the GNU General Public License
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64091
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63997
diff changeset
23 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63997
diff changeset
24 ;; Boston, MA 02110-1301, USA.
17524
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
25
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
26 ;;; Commentary:
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
27 ;;
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
28 ;; See `custom.el'.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
29
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
30 ;;; Code:
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
31
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
32 (defalias 'custom-facep 'facep)
17856
1e5f1a1f0db3 (custom-facep): Defined (once again).
Richard M. Stallman <rms@gnu.org>
parents: 17568
diff changeset
33
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
34 ;;; Declaring a face.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
35
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
36 ;;;###autoload
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
37 (defun custom-declare-face (face spec doc &rest args)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
38 "Like `defface', but FACE is evaluated as a normal argument."
17524
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
39 (unless (get face 'face-defface-spec)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
40 (when (fboundp 'facep)
17524
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
41 (unless (facep face)
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
42 ;; If the user has already created the face, respect that.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
43 (let ((value (or (get face 'saved-face) spec))
83159
38500c0c86ab Merged in changes from CVS trunk.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014 56079
diff changeset
44 (have-window-system (memq initial-window-system '(x w32))))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
45 ;; Create global face.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
46 (make-empty-face face)
48521
e8d332923257 (custom-declare-face): Add face-defface-spec prop after applying the
Richard M. Stallman <rms@gnu.org>
parents: 44471
diff changeset
47 ;; Create frame-local faces
56079
16a8650c3814 (custom-declare-face): Simplify code.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
48 (dolist (frame (frame-list))
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 52401
diff changeset
49 (face-spec-set face value frame)
83389
732c5740ca8f Merged from miles@gnu.org--gnu-2005 (patch 610-614)
Karoly Lorentey <lorentey@elte.hu>
parents: 83353 66273
diff changeset
50 (when (memq (window-system frame) '(x w32 mac))
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 52401
diff changeset
51 (setq have-window-system t)))
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 52401
diff changeset
52 ;; When making a face after frames already exist
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 52401
diff changeset
53 (if have-window-system
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 52401
diff changeset
54 (make-face-x-resource-internal face)))))
48521
e8d332923257 (custom-declare-face): Add face-defface-spec prop after applying the
Richard M. Stallman <rms@gnu.org>
parents: 44471
diff changeset
55 ;; Don't record SPEC until we see it causes no errors.
e8d332923257 (custom-declare-face): Add face-defface-spec prop after applying the
Richard M. Stallman <rms@gnu.org>
parents: 44471
diff changeset
56 (put face 'face-defface-spec spec)
59369
7c06e308c354 (custom-declare-face): Record defface in current-load-list.
Richard M. Stallman <rms@gnu.org>
parents: 59278
diff changeset
57 (push (cons 'defface face) current-load-list)
18935
ab4cd3135797 (custom-declare-face): Use [set-]face-documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18599
diff changeset
58 (when (and doc (null (face-documentation face)))
26583
3251a6750150 (custom-declare-face): Purecopy DOC.
Dave Love <fx@gnu.org>
parents: 25684
diff changeset
59 (set-face-documentation face (purecopy doc)))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
60 (custom-handle-all-keywords face args 'custom-face)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
61 (run-hooks 'custom-define-hook))
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
62 face)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
63
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
64 ;;; Face attributes.
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
65
63765
d30261824cd5 (custom-face-attributes): Add autoload.
Richard M. Stallman <rms@gnu.org>
parents: 59369
diff changeset
66 ;;;###autoload
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
67 (defconst custom-face-attributes
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
68 '((:family
39607
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
69 (string :tag "Font Family"
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
70 :help-echo "Font family or fontset alias name."))
48950
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
71
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
72 (:width
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
73 (choice :tag "Width"
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
74 :help-echo "Font width."
39607
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
75 :value normal ; default
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
76 (const :tag "compressed" condensed)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
77 (const :tag "condensed" condensed)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
78 (const :tag "demiexpanded" semi-expanded)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
79 (const :tag "expanded" expanded)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
80 (const :tag "extracondensed" extra-condensed)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
81 (const :tag "extraexpanded" extra-expanded)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
82 (const :tag "medium" normal)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
83 (const :tag "narrow" condensed)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
84 (const :tag "normal" normal)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
85 (const :tag "regular" normal)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
86 (const :tag "semicondensed" semi-condensed)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
87 (const :tag "semiexpanded" semi-expanded)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
88 (const :tag "ultracondensed" ultra-condensed)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
89 (const :tag "ultraexpanded" ultra-expanded)
33844
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
90 (const :tag "wide" extra-expanded)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48950
diff changeset
91
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
92 (:height
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
93 (choice :tag "Height"
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
94 :help-echo "Face's font height."
39607
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
95 :value 1.0 ; default
31192
4cea72ab1bae (custom-face-attributes):
Miles Bader <miles@gnu.org>
parents: 29213
diff changeset
96 (integer :tag "Height in 1/10 pt")
33844
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
97 (number :tag "Scale" 1.0)))
31192
4cea72ab1bae (custom-face-attributes):
Miles Bader <miles@gnu.org>
parents: 29213
diff changeset
98
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
99 (:weight
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
100 (choice :tag "Weight"
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
101 :help-echo "Font weight."
39607
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
102 :value normal ; default
44471
b1d6fcf67b85 (custom-face-attributes): Fix typo in `ultra-bold'.
Richard M. Stallman <rms@gnu.org>
parents: 39607
diff changeset
103 (const :tag "black" ultra-bold)
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
104 (const :tag "bold" bold)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
105 (const :tag "book" semi-light)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
106 (const :tag "demibold" semi-bold)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
107 (const :tag "extralight" extra-light)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
108 (const :tag "extrabold" extra-bold)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
109 (const :tag "heavy" extra-bold)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
110 (const :tag "light" light)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
111 (const :tag "medium" normal)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
112 (const :tag "normal" normal)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
113 (const :tag "regular" normal)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
114 (const :tag "semibold" semi-bold)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
115 (const :tag "semilight" semi-light)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
116 (const :tag "ultralight" ultra-light)
33844
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
117 (const :tag "ultrabold" ultra-bold)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48950
diff changeset
118
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
119 (:slant
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
120 (choice :tag "Slant"
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
121 :help-echo "Font slant."
39607
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
122 :value normal ; default
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
123 (const :tag "italic" italic)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
124 (const :tag "oblique" oblique)
33844
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
125 (const :tag "normal" normal)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48950
diff changeset
126
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
127 (:underline
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
128 (choice :tag "Underline"
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
129 :help-echo "Control text underlining."
39607
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
130 (const :tag "Off" nil)
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
131 (const :tag "On" t)
33844
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
132 (color :tag "Colored")))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48950
diff changeset
133
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
134 (:overline
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
135 (choice :tag "Overline"
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
136 :help-echo "Control text overlining."
39607
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
137 (const :tag "Off" nil)
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
138 (const :tag "On" t)
33844
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
139 (color :tag "Colored")))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48950
diff changeset
140
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
141 (:strike-through
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
142 (choice :tag "Strike-through"
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
143 :help-echo "Control text strike-through."
39607
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
144 (const :tag "Off" nil)
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
145 (const :tag "On" t)
33844
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
146 (color :tag "Colored")))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48950
diff changeset
147
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
148 (:box
25684
e3ed0e86532c (custom-face-attributes): Simplify :underline, :overline,
Dave Love <fx@gnu.org>
parents: 24984
diff changeset
149 ;; Fixme: this can probably be done better.
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
150 (choice :tag "Box around text"
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
151 :help-echo "Control box around text."
39607
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
152 (const :tag "Off" nil)
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
153 (list :tag "Box"
33936
e66f3c5840a4 (custom-face-attributes): Add post-filter function for :box.
Miles Bader <miles@gnu.org>
parents: 33874
diff changeset
154 :value (:line-width 2 :color "grey75" :style released-button)
25684
e3ed0e86532c (custom-face-attributes): Simplify :underline, :overline,
Dave Love <fx@gnu.org>
parents: 24984
diff changeset
155 (const :format "" :value :line-width)
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
156 (integer :tag "Width")
25684
e3ed0e86532c (custom-face-attributes): Simplify :underline, :overline,
Dave Love <fx@gnu.org>
parents: 24984
diff changeset
157 (const :format "" :value :color)
e3ed0e86532c (custom-face-attributes): Simplify :underline, :overline,
Dave Love <fx@gnu.org>
parents: 24984
diff changeset
158 (choice :tag "Color" (const :tag "*" nil) color)
e3ed0e86532c (custom-face-attributes): Simplify :underline, :overline,
Dave Love <fx@gnu.org>
parents: 24984
diff changeset
159 (const :format "" :value :style)
e3ed0e86532c (custom-face-attributes): Simplify :underline, :overline,
Dave Love <fx@gnu.org>
parents: 24984
diff changeset
160 (choice :tag "Style"
e3ed0e86532c (custom-face-attributes): Simplify :underline, :overline,
Dave Love <fx@gnu.org>
parents: 24984
diff changeset
161 (const :tag "Raised" released-button)
e3ed0e86532c (custom-face-attributes): Simplify :underline, :overline,
Dave Love <fx@gnu.org>
parents: 24984
diff changeset
162 (const :tag "Sunken" pressed-button)
e3ed0e86532c (custom-face-attributes): Simplify :underline, :overline,
Dave Love <fx@gnu.org>
parents: 24984
diff changeset
163 (const :tag "None" nil))))
33844
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
164 ;; filter to make value suitable for customize
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
165 (lambda (real-value)
39607
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
166 (and real-value
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
167 (let ((lwidth
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
168 (or (and (consp real-value)
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
169 (plist-get real-value :line-width))
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
170 (and (integerp real-value) real-value)
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
171 1))
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
172 (color
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
173 (or (and (consp real-value) (plist-get real-value :color))
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
174 (and (stringp real-value) real-value)
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
175 nil))
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
176 (style
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
177 (and (consp real-value) (plist-get real-value :style))))
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
178 (list :line-width lwidth :color color :style style))))
33936
e66f3c5840a4 (custom-face-attributes): Add post-filter function for :box.
Miles Bader <miles@gnu.org>
parents: 33874
diff changeset
179 ;; filter to make customized-value suitable for storing
e66f3c5840a4 (custom-face-attributes): Add post-filter function for :box.
Miles Bader <miles@gnu.org>
parents: 33874
diff changeset
180 (lambda (cus-value)
39607
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
181 (and cus-value
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
182 (let ((lwidth (plist-get cus-value :line-width))
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
183 (color (plist-get cus-value :color))
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
184 (style (plist-get cus-value :style)))
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
185 (cond ((and (null color) (null style))
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
186 lwidth)
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
187 ((and (null lwidth) (null style))
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
188 ;; actually can't happen, because LWIDTH is always an int
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
189 color)
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
190 (t
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
191 ;; Keep as a plist, but remove null entries
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
192 (nconc (and lwidth `(:line-width ,lwidth))
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
193 (and color `(:color ,color))
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
194 (and style `(:style ,style)))))))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48950
diff changeset
195
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
196 (:inverse-video
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
197 (choice :tag "Inverse-video"
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
198 :help-echo "Control whether text should be in inverse-video."
39607
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
199 (const :tag "Off" nil)
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
200 (const :tag "On" t)))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48950
diff changeset
201
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
202 (:foreground
39607
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
203 (color :tag "Foreground"
59278
da0a523ffb17 (custom-face-attributes):
Richard M. Stallman <rms@gnu.org>
parents: 56079
diff changeset
204 :help-echo "Set foreground color (name or #RRGGBB hex spec)."))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48950
diff changeset
205
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
206 (:background
39607
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
207 (color :tag "Background"
59278
da0a523ffb17 (custom-face-attributes):
Richard M. Stallman <rms@gnu.org>
parents: 56079
diff changeset
208 :help-echo "Set background color (name or #RRGGBB hex spec)."))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48950
diff changeset
209
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
210 (:stipple
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
211 (choice :tag "Stipple"
33874
2dccf621b517 (custom-face-attributes): Add "None" choice to :stipple.
Miles Bader <miles@gnu.org>
parents: 33844
diff changeset
212 :help-echo "Background bit-mask"
39607
dc8769075676 (custom-face-attributes): Make sure each attribute has a valid default
Miles Bader <miles@gnu.org>
parents: 38436
diff changeset
213 (const :tag "None" nil)
33874
2dccf621b517 (custom-face-attributes): Add "None" choice to :stipple.
Miles Bader <miles@gnu.org>
parents: 33844
diff changeset
214 (file :tag "File"
2dccf621b517 (custom-face-attributes): Add "None" choice to :stipple.
Miles Bader <miles@gnu.org>
parents: 33844
diff changeset
215 :help-echo "Name of bitmap file."
2dccf621b517 (custom-face-attributes): Add "None" choice to :stipple.
Miles Bader <miles@gnu.org>
parents: 33844
diff changeset
216 :must-match t)))
31192
4cea72ab1bae (custom-face-attributes):
Miles Bader <miles@gnu.org>
parents: 29213
diff changeset
217
4cea72ab1bae (custom-face-attributes):
Miles Bader <miles@gnu.org>
parents: 29213
diff changeset
218 (:inherit
4cea72ab1bae (custom-face-attributes):
Miles Bader <miles@gnu.org>
parents: 29213
diff changeset
219 (repeat :tag "Inherit"
4cea72ab1bae (custom-face-attributes):
Miles Bader <miles@gnu.org>
parents: 29213
diff changeset
220 :help-echo "List of faces to inherit attributes from."
4cea72ab1bae (custom-face-attributes):
Miles Bader <miles@gnu.org>
parents: 29213
diff changeset
221 (face :Tag "Face" default))
33844
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
222 ;; filter to make value suitable for customize
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
223 (lambda (real-value)
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
224 (cond ((or (null real-value) (eq real-value 'unspecified))
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
225 nil)
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
226 ((symbolp real-value)
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
227 (list real-value))
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
228 (t
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
229 real-value)))
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
230 ;; filter to make customized-value suitable for storing
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
231 (lambda (cus-value)
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
232 (if (and (consp cus-value) (null (cdr cus-value)))
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
233 (car cus-value)
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
234 cus-value))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48950
diff changeset
235
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
236 "Alist of face attributes.
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
237
33844
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
238 The elements are of the form (KEY TYPE PRE-FILTER POST-FILTER),
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
239 where KEY is the name of the attribute, TYPE is a widget type for
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
240 editing the attribute, PRE-FILTER is a function to make the attribute's
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
241 value suitable for the customization widget, and POST-FILTER is a
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
242 function to make the customized value suitable for storing. PRE-FILTER
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
243 and POST-FILTER are optional.
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
244
33844
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
245 The PRE-FILTER should take a single argument, the attribute value as
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
246 stored, and should return a value for customization (using the
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
247 customization type TYPE).
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
248
33844
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
249 The POST-FILTER should also take a single argument, the value after
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
250 being customized, and should return a value suitable for setting the
1ae73b01ef27 (custom-face-attributes): Remove SET and GET functions. Add some
Miles Bader <miles@gnu.org>
parents: 31192
diff changeset
251 given face attribute.")
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
252
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
253 (defun custom-face-attributes-get (face frame)
17524
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
254 "For FACE on FRAME, return an alternating list describing its attributes.
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
255 The list has the form (KEYWORD VALUE KEYWORD VALUE...).
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
256 Each keyword should be listed in `custom-face-attributes'.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
257
17524
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
258 If FRAME is nil, use the global defaults for FACE."
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
259 (let ((attrs custom-face-attributes)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
260 plist)
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
261 (while attrs
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
262 (let* ((attribute (car (car attrs)))
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
263 (value (face-attribute face attribute frame)))
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
264 (setq attrs (cdr attrs))
31192
4cea72ab1bae (custom-face-attributes):
Miles Bader <miles@gnu.org>
parents: 29213
diff changeset
265 (unless (or (eq value 'unspecified)
4cea72ab1bae (custom-face-attributes):
Miles Bader <miles@gnu.org>
parents: 29213
diff changeset
266 (and (null value) (memq attribute '(:inherit))))
24984
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
267 (setq plist (cons attribute (cons value plist))))))
Gerd Moellmann <gerd@gnu.org>
parents: 21942
diff changeset
268 plist))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
269
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
270 ;;; Initializing.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
271
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
272 ;;;###autoload
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
273 (defun custom-set-faces (&rest args)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
274 "Initialize faces according to user preferences.
48950
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
275 This associates the settings with the `user' theme.
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
276 The arguments should be a list where each entry has the form:
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
277
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
278 (FACE SPEC [NOW [COMMENT]])
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
279
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
280 SPEC is stored as the saved value for FACE, as well as the value for the
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
281 `user' theme. The `user' theme is one of the default themes known to Emacs.
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
282 See `custom-known-themes' for more information on the known themes.
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
283 See `custom-theme-set-faces' for more information on the interplay
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
284 between themes and faces.
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
285 See `defface' for the format of SPEC.
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
286
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
287 If NOW is present and non-nil, FACE is created now, according to SPEC.
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
288 COMMENT is a string comment about FACE."
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
289 (apply 'custom-theme-set-faces 'user args))
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
290
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
291 (defun custom-theme-set-faces (theme &rest args)
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
292 "Initialize faces for theme THEME.
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
293 The arguments should be a list where each entry has the form:
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
294
25684
e3ed0e86532c (custom-face-attributes): Simplify :underline, :overline,
Dave Love <fx@gnu.org>
parents: 24984
diff changeset
295 (FACE SPEC [NOW [COMMENT]])
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
296
48950
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
297 SPEC is stored as the saved value for FACE, as well as the value for the
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
298 `user' theme. The `user' theme is one of the default themes known to Emacs.
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
299 See `custom-known-themes' for more information on the known themes.
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
300 See `custom-theme-set-faces' for more information on the interplay
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
301 between themes and faces.
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
302 See `defface' for the format of SPEC.
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
303
17524
8ba505704d9d Major simplification; most of file contents deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17415
diff changeset
304 If NOW is present and non-nil, FACE is created now, according to SPEC.
25684
e3ed0e86532c (custom-face-attributes): Simplify :underline, :overline,
Dave Love <fx@gnu.org>
parents: 24984
diff changeset
305 COMMENT is a string comment about FACE.
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
306
48950
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
307 Several properties of THEME and FACE are used in the process:
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
308
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
309 If THEME property `theme-immediate' is non-nil, this is equivalent of
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
310 providing the NOW argument to all faces in the argument list: FACE is
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
311 created now. The only difference is FACE property `force-face': if NOW
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
312 is non-nil, FACE property `force-face' is set to the symbol `rogue', else
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
313 if THEME property `theme-immediate' is non-nil, FACE property `force-face'
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
314 is set to the symbol `immediate'.
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
315
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
316 SPEC itself is saved in FACE property `saved-face' and it is stored in
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
317 FACE's list property `theme-face' \(using `custom-push-theme')."
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
318 (custom-check-theme theme)
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
319 (let ((immediate (get theme 'theme-immediate)))
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
320 (while args
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
321 (let ((entry (car args)))
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
322 (if (listp entry)
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
323 (let ((face (nth 0 entry))
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
324 (spec (nth 1 entry))
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
325 (now (nth 2 entry))
67123
6e41569f62c8 * custom.el (enable-theme): Signal error if argument is not a
Chong Yidong <cyd@stupidchicken.com>
parents: 66273
diff changeset
326 (comment (nth 3 entry))
6e41569f62c8 * custom.el (enable-theme): Signal error if argument is not a
Chong Yidong <cyd@stupidchicken.com>
parents: 66273
diff changeset
327 oldspec)
63997
3314a44dacf7 (custom-theme-set-faces): Make it handle face aliases whose alias
Luc Teirlinck <teirllm@auburn.edu>
parents: 63765
diff changeset
328 ;; If FACE is actually an alias, customize the face it
3314a44dacf7 (custom-theme-set-faces): Make it handle face aliases whose alias
Luc Teirlinck <teirllm@auburn.edu>
parents: 63765
diff changeset
329 ;; is aliased to.
3314a44dacf7 (custom-theme-set-faces): Make it handle face aliases whose alias
Luc Teirlinck <teirllm@auburn.edu>
parents: 63765
diff changeset
330 (if (get face 'face-alias)
3314a44dacf7 (custom-theme-set-faces): Make it handle face aliases whose alias
Luc Teirlinck <teirllm@auburn.edu>
parents: 63765
diff changeset
331 (setq face (get face 'face-alias)))
67123
6e41569f62c8 * custom.el (enable-theme): Signal error if argument is not a
Chong Yidong <cyd@stupidchicken.com>
parents: 66273
diff changeset
332
6e41569f62c8 * custom.el (enable-theme): Signal error if argument is not a
Chong Yidong <cyd@stupidchicken.com>
parents: 66273
diff changeset
333 (setq oldspec (get face 'theme-face))
6e41569f62c8 * custom.el (enable-theme): Signal error if argument is not a
Chong Yidong <cyd@stupidchicken.com>
parents: 66273
diff changeset
334 (when (not (and oldspec (eq 'user (caar oldspec))))
6e41569f62c8 * custom.el (enable-theme): Signal error if argument is not a
Chong Yidong <cyd@stupidchicken.com>
parents: 66273
diff changeset
335 (put face 'saved-face spec)
6e41569f62c8 * custom.el (enable-theme): Signal error if argument is not a
Chong Yidong <cyd@stupidchicken.com>
parents: 66273
diff changeset
336 (put face 'saved-face-comment comment))
6e41569f62c8 * custom.el (enable-theme): Signal error if argument is not a
Chong Yidong <cyd@stupidchicken.com>
parents: 66273
diff changeset
337
48950
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
338 (custom-push-theme 'theme-face face theme 'set spec)
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
339 (when (or now immediate)
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
340 (put face 'force-face (if now 'rogue 'immediate)))
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
341 (when (or now immediate (facep face))
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
342 (unless (facep face)
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
343 (make-empty-face face))
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
344 (put face 'face-comment comment)
84613
f8c971a5c815 (custom-theme-set-faces): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 84373
diff changeset
345 (face-spec-set face spec nil))
f8c971a5c815 (custom-theme-set-faces): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 84373
diff changeset
346 (setq args (cdr args)))
f8c971a5c815 (custom-theme-set-faces): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 84373
diff changeset
347 ;; Old format, a plist of FACE SPEC pairs.
f8c971a5c815 (custom-theme-set-faces): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 84373
diff changeset
348 (let ((face (nth 0 args))
f8c971a5c815 (custom-theme-set-faces): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 84373
diff changeset
349 (spec (nth 1 args)))
f8c971a5c815 (custom-theme-set-faces): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 84373
diff changeset
350 (if (get face 'face-alias)
f8c971a5c815 (custom-theme-set-faces): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 84373
diff changeset
351 (setq face (get face 'face-alias)))
f8c971a5c815 (custom-theme-set-faces): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 84373
diff changeset
352 (put face 'saved-face spec)
f8c971a5c815 (custom-theme-set-faces): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 84373
diff changeset
353 (custom-push-theme 'theme-face face theme 'set spec))
f8c971a5c815 (custom-theme-set-faces): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 84373
diff changeset
354 (setq args (cdr (cdr args))))))))
48950
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
355
67977
03ee9bccbfeb * custom.el: Move Custom Themes commentary to start of theme code.
Chong Yidong <cyd@stupidchicken.com>
parents: 67123
diff changeset
356 ;; XEmacs compability function. In XEmacs, when you reset a Custom
03ee9bccbfeb * custom.el: Move Custom Themes commentary to start of theme code.
Chong Yidong <cyd@stupidchicken.com>
parents: 67123
diff changeset
357 ;; Theme, you have to specify the theme to reset it to. We just apply
03ee9bccbfeb * custom.el: Move Custom Themes commentary to start of theme code.
Chong Yidong <cyd@stupidchicken.com>
parents: 67123
diff changeset
358 ;; the next theme.
48950
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
359 ;;;###autoload
64219
cd5dc4349fb2 (custom-theme-set-faces): Make it work.
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
360 (defun custom-theme-reset-faces (theme &rest args)
cd5dc4349fb2 (custom-theme-set-faces): Make it work.
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
361 "Reset the specs in THEME of some faces to their specs in other themes.
cd5dc4349fb2 (custom-theme-set-faces): Make it work.
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
362 Each of the arguments ARGS has this form:
48950
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
363
67977
03ee9bccbfeb * custom.el: Move Custom Themes commentary to start of theme code.
Chong Yidong <cyd@stupidchicken.com>
parents: 67123
diff changeset
364 (FACE IGNORED)
48950
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
365
67977
03ee9bccbfeb * custom.el: Move Custom Themes commentary to start of theme code.
Chong Yidong <cyd@stupidchicken.com>
parents: 67123
diff changeset
366 This means reset FACE. The argument IGNORED is ignored."
48950
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
367 (custom-check-theme theme)
64219
cd5dc4349fb2 (custom-theme-set-faces): Make it work.
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
368 (dolist (arg args)
67977
03ee9bccbfeb * custom.el: Move Custom Themes commentary to start of theme code.
Chong Yidong <cyd@stupidchicken.com>
parents: 67123
diff changeset
369 (custom-push-theme 'theme-face (car arg) theme 'reset)))
48950
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
370
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
371 ;;;###autoload
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
372 (defun custom-reset-faces (&rest args)
64219
cd5dc4349fb2 (custom-theme-set-faces): Make it work.
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
373 "Reset the specs of some faces to their specs in specified themes.
cd5dc4349fb2 (custom-theme-set-faces): Make it work.
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
374 This creates settings in the `user' theme.
48950
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
375
64219
cd5dc4349fb2 (custom-theme-set-faces): Make it work.
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
376 Each of the arguments ARGS has this form:
cd5dc4349fb2 (custom-theme-set-faces): Make it work.
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
377
cd5dc4349fb2 (custom-theme-set-faces): Make it work.
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
378 (FACE FROM-THEME)
cd5dc4349fb2 (custom-theme-set-faces): Make it work.
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
379
cd5dc4349fb2 (custom-theme-set-faces): Make it work.
Richard M. Stallman <rms@gnu.org>
parents: 64091
diff changeset
380 This means reset FACE to its value in FROM-THEME."
48950
8ccf8576bbc1 (custom-set-faces): Call custom-theme-set-faces.
Richard M. Stallman <rms@gnu.org>
parents: 48521
diff changeset
381 (apply 'custom-theme-reset-faces 'user args))
17334
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
382
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
383 ;;; The End.
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
384
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
385 (provide 'cus-face)
1effe507ea85 Initial revision
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
diff changeset
386
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49588
diff changeset
387 ;;; arch-tag: 9a5c4b63-0d27-4c92-a5af-f2c7ed764c2b
25684
e3ed0e86532c (custom-face-attributes): Simplify :underline, :overline,
Dave Love <fx@gnu.org>
parents: 24984
diff changeset
388 ;;; cus-face.el ends here