Mercurial > emacs
annotate lisp/faces.el @ 66573:e65b759c6906
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-630
Merge from gnus--rel--5.10
Patches applied:
* gnus--rel--5.10 (patch 149-151)
- Merge from emacs--cvs-trunk--0
- Update from CVS
2005-10-27 Reiner Steib <Reiner.Steib@gmx.de>
* lisp/gnus/flow-fill.el (fill-flowed-encode-tests): Restore trailing
whitespace removed in revision 7.8. Use concatenated string to
protect trailing whitespace.
2005-10-27 Jouni K Seppanen <jks@iki.fi> (tiny change)
* lisp/gnus/nnimap.el (nnimap-search-uids-not-since-is-evil): Add variable.
(nnimap-request-expire-articles): Use it to avoid sending 'UID
SEARCH UID ... NOT SINCE' queries, for inefficient servers like
Courier IMAP ("some version from 2004"). Mostly based on similar
code in the same function.
2005-10-26 Katsumi Yamaoka <yamaoka@jpl.org>
* lisp/gnus/message.el (message-display-completion-list): New function.
(message-expand-group): Use it; make sure the Completions buffer
is modifiable.
author | Miles Bader <miles@gnu.org> |
---|---|
date | Mon, 31 Oct 2005 07:07:28 +0000 |
parents | fcb2ec449238 |
children | 56a63119fa20 b31326248cf6 |
rev | line source |
---|---|
25012 | 1 ;;; faces.el --- Lisp faces |
2456 | 2 |
64762
41bb365f41c4
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64724
diff
changeset
|
3 ;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, |
41bb365f41c4
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64724
diff
changeset
|
4 ;; 2002, 2003, 2004, 2005 Free Software Foundation, Inc. |
2456 | 5 |
38697
a19197c6442f
Keyword added and FSF specified as Maintainer.
Pavel Janík <Pavel@Janik.cz>
parents:
38233
diff
changeset
|
6 ;; Maintainer: FSF |
45078 | 7 ;; Keywords: internal |
38697
a19197c6442f
Keyword added and FSF specified as Maintainer.
Pavel Janík <Pavel@Janik.cz>
parents:
38233
diff
changeset
|
8 |
2456 | 9 ;; This file is part of GNU Emacs. |
10 | |
11 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
12 ;; it under the terms of the GNU General Public License as published by | |
13 ;; the Free Software Foundation; either version 2, or (at your option) | |
14 ;; any later version. | |
15 | |
16 ;; GNU Emacs is distributed in the hope that it will be useful, | |
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 ;; GNU General Public License for more details. | |
20 | |
21 ;; You should have received a copy of the GNU General Public License | |
14169 | 22 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
64091 | 23 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
24 ;; Boston, MA 02110-1301, USA. | |
2456 | 25 |
26 ;;; Commentary: | |
27 | |
28 ;;; Code: | |
29 | |
10107
2af74ff52cd0
At compile time, discard any defsubr definitions
Richard M. Stallman <rms@gnu.org>
parents:
10105
diff
changeset
|
30 (eval-when-compile |
31528
a461cad7a942
(face-x-resources): Make custom type more specific.
Dave Love <fx@gnu.org>
parents:
31500
diff
changeset
|
31 (require 'cl) |
a461cad7a942
(face-x-resources): Make custom type more specific.
Dave Love <fx@gnu.org>
parents:
31500
diff
changeset
|
32 ;; Warning suppression -- can't require x-win in batch: |
a461cad7a942
(face-x-resources): Make custom type more specific.
Dave Love <fx@gnu.org>
parents:
31500
diff
changeset
|
33 (autoload 'xw-defined-colors "x-win")) |
2456 | 34 |
65289
f6a81af3abe8
(help-xref-stack-item): Add defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
65084
diff
changeset
|
35 (defvar help-xref-stack-item) |
2744
f4fc0c4c76f9
Re-arranged stuff to put defsubst accessors at the top
Jim Blandy <jimb@redhat.com>
parents:
2715
diff
changeset
|
36 |
25012 | 37 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
38 ;;; Font selection. | |
39 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
2456 | 40 |
25012 | 41 (defgroup font-selection nil |
42 "Influencing face font selection." | |
43 :group 'faces) | |
2456 | 44 |
12562
a9b08e50d6ec
(x-create-frame-with-faces): Set background-mode
Karl Heuer <kwzh@gnu.org>
parents:
12475
diff
changeset
|
45 |
25012 | 46 (defcustom face-font-selection-order |
47 '(:width :height :weight :slant) | |
48 "*A list specifying how face font selection chooses fonts. | |
49 Each of the four symbols `:width', `:height', `:weight', and `:slant' | |
50 must appear once in the list, and the list must not contain any other | |
51 elements. Font selection tries to find a best matching font for | |
52 those face attributes first that appear first in the list. For | |
53 example, if `:slant' appears before `:height', font selection first | |
54 tries to find a font with a suitable slant, even if this results in | |
55 a font height that isn't optimal." | |
48713
a91fa6973510
(face-font-selection-order)
Andreas Schwab <schwab@suse.de>
parents:
48522
diff
changeset
|
56 :tag "Font selection order" |
30306
7a694e8efd12
(face-font-selection-order)
Gerd Moellmann <gerd@gnu.org>
parents:
30188
diff
changeset
|
57 :type '(list symbol symbol symbol symbol) |
25012 | 58 :group 'font-selection |
59 :set #'(lambda (symbol value) | |
60 (set-default symbol value) | |
61 (internal-set-font-selection-order value))) | |
17522
209c61e51bd0
(frame-set-background-mode): New function.
Richard M. Stallman <rms@gnu.org>
parents:
17386
diff
changeset
|
62 |
33371
8259eb8d96c2
(face-font-registry-alternatives): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
33008
diff
changeset
|
63 |
8259eb8d96c2
(face-font-registry-alternatives): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
33008
diff
changeset
|
64 ;; This is defined originally in xfaces.c. |
25012 | 65 (defcustom face-font-family-alternatives |
66 '(("courier" "fixed") | |
27888
3e1c17057b79
(face-font-family-alternatives): Add arial to helv.
Jason Rumney <jasonr@gnu.org>
parents:
27831
diff
changeset
|
67 ("helv" "helvetica" "arial" "fixed")) |
25012 | 68 "*Alist of alternative font family names. |
42705 | 69 Each element has the form (FAMILY ALTERNATIVE1 ALTERNATIVE2 ...). |
25012 | 70 If fonts of family FAMILY can't be loaded, try ALTERNATIVE1, then |
71 ALTERNATIVE2 etc." | |
48713
a91fa6973510
(face-font-selection-order)
Andreas Schwab <schwab@suse.de>
parents:
48522
diff
changeset
|
72 :tag "Alternative font families to try" |
30306
7a694e8efd12
(face-font-selection-order)
Gerd Moellmann <gerd@gnu.org>
parents:
30188
diff
changeset
|
73 :type '(repeat (repeat string)) |
25012 | 74 :group 'font-selection |
75 :set #'(lambda (symbol value) | |
76 (set-default symbol value) | |
77 (internal-set-alternative-font-family-alist value))) | |
13725 | 78 |
25012 | 79 |
33371
8259eb8d96c2
(face-font-registry-alternatives): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
33008
diff
changeset
|
80 ;; This is defined originally in xfaces.c. |
8259eb8d96c2
(face-font-registry-alternatives): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
33008
diff
changeset
|
81 (defcustom face-font-registry-alternatives |
39549
044b46ec5fff
(face-font-registry-alternatives) [windows-nt]: Make
Andrew Innes <andrewi@gnu.org>
parents:
38697
diff
changeset
|
82 (if (eq system-type 'windows-nt) |
42969
bdcf2b5f4ae2
(face-font-registry-alternatives) [windows-nt]: Add
Jason Rumney <jasonr@gnu.org>
parents:
42705
diff
changeset
|
83 '(("iso8859-1" "ms-oemlatin") |
bdcf2b5f4ae2
(face-font-registry-alternatives) [windows-nt]: Add
Jason Rumney <jasonr@gnu.org>
parents:
42705
diff
changeset
|
84 ("gb2312.1980" "gb2312") |
39549
044b46ec5fff
(face-font-registry-alternatives) [windows-nt]: Make
Andrew Innes <andrewi@gnu.org>
parents:
38697
diff
changeset
|
85 ("jisx0208.1990" "jisx0208.1983" "jisx0208.1978") |
044b46ec5fff
(face-font-registry-alternatives) [windows-nt]: Make
Andrew Innes <andrewi@gnu.org>
parents:
38697
diff
changeset
|
86 ("ksc5601.1989" "ksx1001.1992" "ksc5601.1987") |
044b46ec5fff
(face-font-registry-alternatives) [windows-nt]: Make
Andrew Innes <andrewi@gnu.org>
parents:
38697
diff
changeset
|
87 ("muletibetan-2" "muletibetan-0")) |
044b46ec5fff
(face-font-registry-alternatives) [windows-nt]: Make
Andrew Innes <andrewi@gnu.org>
parents:
38697
diff
changeset
|
88 '(("gb2312.1980" "gb2312.80&gb8565.88" "gbk*") |
044b46ec5fff
(face-font-registry-alternatives) [windows-nt]: Make
Andrew Innes <andrewi@gnu.org>
parents:
38697
diff
changeset
|
89 ("jisx0208.1990" "jisx0208.1983" "jisx0208.1978") |
044b46ec5fff
(face-font-registry-alternatives) [windows-nt]: Make
Andrew Innes <andrewi@gnu.org>
parents:
38697
diff
changeset
|
90 ("ksc5601.1989" "ksx1001.1992" "ksc5601.1987") |
044b46ec5fff
(face-font-registry-alternatives) [windows-nt]: Make
Andrew Innes <andrewi@gnu.org>
parents:
38697
diff
changeset
|
91 ("muletibetan-2" "muletibetan-0"))) |
33371
8259eb8d96c2
(face-font-registry-alternatives): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
33008
diff
changeset
|
92 "*Alist of alternative font registry names. |
42705 | 93 Each element has the form (REGISTRY ALTERNATIVE1 ALTERNATIVE2 ...). |
34162
08b928780fd1
(face-font-registry-alternatives): Add entries for CJK
Kenichi Handa <handa@m17n.org>
parents:
34018
diff
changeset
|
94 If fonts of registry REGISTRY can be loaded, font selection |
08b928780fd1
(face-font-registry-alternatives): Add entries for CJK
Kenichi Handa <handa@m17n.org>
parents:
34018
diff
changeset
|
95 tries to find a best matching font among all fonts of registry |
08b928780fd1
(face-font-registry-alternatives): Add entries for CJK
Kenichi Handa <handa@m17n.org>
parents:
34018
diff
changeset
|
96 REGISTRY, ALTERNATIVE1, ALTERNATIVE2, and etc." |
48713
a91fa6973510
(face-font-selection-order)
Andreas Schwab <schwab@suse.de>
parents:
48522
diff
changeset
|
97 :tag "Alternative font registries to try" |
33371
8259eb8d96c2
(face-font-registry-alternatives): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
33008
diff
changeset
|
98 :type '(repeat (repeat string)) |
33419
21ac2c51ac59
(face-font-registry-alternatives): Add :version.
Dave Love <fx@gnu.org>
parents:
33371
diff
changeset
|
99 :version "21.1" |
33371
8259eb8d96c2
(face-font-registry-alternatives): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
33008
diff
changeset
|
100 :group 'font-selection |
8259eb8d96c2
(face-font-registry-alternatives): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
33008
diff
changeset
|
101 :set #'(lambda (symbol value) |
8259eb8d96c2
(face-font-registry-alternatives): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
33008
diff
changeset
|
102 (set-default symbol value) |
8259eb8d96c2
(face-font-registry-alternatives): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
33008
diff
changeset
|
103 (internal-set-alternative-font-registry-alist value))) |
8259eb8d96c2
(face-font-registry-alternatives): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
33008
diff
changeset
|
104 |
8259eb8d96c2
(face-font-registry-alternatives): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
33008
diff
changeset
|
105 |
2744
f4fc0c4c76f9
Re-arranged stuff to put defsubst accessors at the top
Jim Blandy <jimb@redhat.com>
parents:
2715
diff
changeset
|
106 |
25012 | 107 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
108 ;;; Creation, copying. | |
109 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
2744
f4fc0c4c76f9
Re-arranged stuff to put defsubst accessors at the top
Jim Blandy <jimb@redhat.com>
parents:
2715
diff
changeset
|
110 |
3925
f286657c098e
* faces.el (global-face-data): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
3911
diff
changeset
|
111 |
2744
f4fc0c4c76f9
Re-arranged stuff to put defsubst accessors at the top
Jim Blandy <jimb@redhat.com>
parents:
2715
diff
changeset
|
112 (defun face-list () |
25012 | 113 "Return a list of all defined face names." |
114 (mapcar #'car face-new-frame-defaults)) | |
115 | |
116 | |
117 ;;; ### If not frame-local initialize by what X resources? | |
118 | |
119 (defun make-face (face &optional no-init-from-resources) | |
120 "Define a new face with name FACE, a symbol. | |
121 NO-INIT-FROM-RESOURCES non-nil means don't initialize frame-local | |
122 variants of FACE from X resources. (X resources recognized are found | |
123 in the global variable `face-x-resources'.) If FACE is already known | |
124 as a face, leave it unmodified. Value is FACE." | |
125 (interactive "SMake face: ") | |
126 (unless (facep face) | |
127 ;; Make frame-local faces (this also makes the global one). | |
128 (dolist (frame (frame-list)) | |
129 (internal-make-lisp-face face frame)) | |
130 ;; Add the face to the face menu. | |
131 (when (fboundp 'facemenu-add-new-face) | |
132 (facemenu-add-new-face face)) | |
133 ;; Define frame-local faces for all frames from X resources. | |
134 (unless no-init-from-resources | |
135 (make-face-x-resource-internal face))) | |
136 face) | |
137 | |
138 | |
139 (defun make-empty-face (face) | |
140 "Define a new, empty face with name FACE. | |
141 If the face already exists, it is left unmodified. Value is FACE." | |
142 (interactive "SMake empty face: ") | |
143 (make-face face 'no-init-from-resources)) | |
144 | |
145 | |
146 (defun copy-face (old-face new-face &optional frame new-frame) | |
147 "Define a face just like OLD-FACE, with name NEW-FACE. | |
148 | |
149 If NEW-FACE already exists as a face, it is modified to be like | |
150 OLD-FACE. If it doesn't already exist, it is created. | |
151 | |
47258
86c1fc3c48f5
(copy-face): Fix spacing.
Juanma Barranquero <lekktu@gmail.com>
parents:
46267
diff
changeset
|
152 If the optional argument FRAME is given as a frame, NEW-FACE is |
25012 | 153 changed on FRAME only. |
154 If FRAME is t, the frame-independent default specification for OLD-FACE | |
155 is copied to NEW-FACE. | |
156 If FRAME is nil, copying is done for the frame-independent defaults | |
157 and for each existing frame. | |
158 | |
159 If the optional fourth argument NEW-FRAME is given, | |
160 copy the information from face OLD-FACE on frame FRAME | |
161 to NEW-FACE on frame NEW-FRAME." | |
162 (let ((inhibit-quit t)) | |
163 (if (null frame) | |
164 (progn | |
165 (dolist (frame (frame-list)) | |
166 (copy-face old-face new-face frame)) | |
167 (copy-face old-face new-face t)) | |
168 (internal-copy-lisp-face old-face new-face frame new-frame)) | |
169 new-face)) | |
170 | |
171 | |
172 | |
173 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
174 ;;; Obsolete functions | |
175 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
176 | |
177 ;; The functions in this section are defined because Lisp packages use | |
178 ;; them, despite the prefix `internal-' suggesting that they are | |
28840 | 179 ;; private to the face implementation. |
2744
f4fc0c4c76f9
Re-arranged stuff to put defsubst accessors at the top
Jim Blandy <jimb@redhat.com>
parents:
2715
diff
changeset
|
180 |
f4fc0c4c76f9
Re-arranged stuff to put defsubst accessors at the top
Jim Blandy <jimb@redhat.com>
parents:
2715
diff
changeset
|
181 (defun internal-find-face (name &optional frame) |
25012 | 182 "Retrieve the face named NAME. |
183 Return nil if there is no such face. | |
2744
f4fc0c4c76f9
Re-arranged stuff to put defsubst accessors at the top
Jim Blandy <jimb@redhat.com>
parents:
2715
diff
changeset
|
184 If the optional argument FRAME is given, this gets the face NAME for |
f4fc0c4c76f9
Re-arranged stuff to put defsubst accessors at the top
Jim Blandy <jimb@redhat.com>
parents:
2715
diff
changeset
|
185 that frame; otherwise, it uses the selected frame. |
f4fc0c4c76f9
Re-arranged stuff to put defsubst accessors at the top
Jim Blandy <jimb@redhat.com>
parents:
2715
diff
changeset
|
186 If FRAME is the symbol t, then the global, non-frame face is returned. |
62947
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
187 If NAME is already a face, it is simply returned." |
25012 | 188 (facep name)) |
29354
4ed4a700358b
Update calls to make-obsolete with a WHEN argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28907
diff
changeset
|
189 (make-obsolete 'internal-find-face 'facep "21.1") |
25012 | 190 |
2744
f4fc0c4c76f9
Re-arranged stuff to put defsubst accessors at the top
Jim Blandy <jimb@redhat.com>
parents:
2715
diff
changeset
|
191 |
f4fc0c4c76f9
Re-arranged stuff to put defsubst accessors at the top
Jim Blandy <jimb@redhat.com>
parents:
2715
diff
changeset
|
192 (defun internal-get-face (name &optional frame) |
f4fc0c4c76f9
Re-arranged stuff to put defsubst accessors at the top
Jim Blandy <jimb@redhat.com>
parents:
2715
diff
changeset
|
193 "Retrieve the face named NAME; error if there is none. |
f4fc0c4c76f9
Re-arranged stuff to put defsubst accessors at the top
Jim Blandy <jimb@redhat.com>
parents:
2715
diff
changeset
|
194 If the optional argument FRAME is given, this gets the face NAME for |
f4fc0c4c76f9
Re-arranged stuff to put defsubst accessors at the top
Jim Blandy <jimb@redhat.com>
parents:
2715
diff
changeset
|
195 that frame; otherwise, it uses the selected frame. |
f4fc0c4c76f9
Re-arranged stuff to put defsubst accessors at the top
Jim Blandy <jimb@redhat.com>
parents:
2715
diff
changeset
|
196 If FRAME is the symbol t, then the global, non-frame face is returned. |
46053
ef0684c3e07b
(frame-update-faces): Fix obsolescence declaration.
Juanma Barranquero <lekktu@gmail.com>
parents:
46041
diff
changeset
|
197 If NAME is already a face, it is simply returned." |
40351
a44d4a7dd8de
(internal-get-face): Use facep instead of the obsolete
Eli Zaretskii <eliz@gnu.org>
parents:
39830
diff
changeset
|
198 (or (facep name) |
25012 | 199 (check-face name))) |
46053
ef0684c3e07b
(frame-update-faces): Fix obsolescence declaration.
Juanma Barranquero <lekktu@gmail.com>
parents:
46041
diff
changeset
|
200 (make-obsolete 'internal-get-face "see `facep' and `check-face'." "21.1") |
2744
f4fc0c4c76f9
Re-arranged stuff to put defsubst accessors at the top
Jim Blandy <jimb@redhat.com>
parents:
2715
diff
changeset
|
201 |
25012 | 202 |
203 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
204 ;;; Predicates, type checks. | |
205 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
206 | |
207 (defun facep (face) | |
63775 | 208 "Return non-nil if FACE is a face name or internal face object. |
209 Return nil otherwise. A face name can be a string or a symbol. | |
210 An internal face object is a vector of the kind used internally | |
211 to record face data." | |
25012 | 212 (internal-lisp-face-p face)) |
213 | |
214 | |
215 (defun check-face (face) | |
216 "Signal an error if FACE doesn't name a face. | |
217 Value is FACE." | |
218 (unless (facep face) | |
219 (error "Not a face: %s" face)) | |
220 face) | |
2744
f4fc0c4c76f9
Re-arranged stuff to put defsubst accessors at the top
Jim Blandy <jimb@redhat.com>
parents:
2715
diff
changeset
|
221 |
f4fc0c4c76f9
Re-arranged stuff to put defsubst accessors at the top
Jim Blandy <jimb@redhat.com>
parents:
2715
diff
changeset
|
222 |
25012 | 223 ;; The ID returned is not to be confused with the internally used IDs |
224 ;; of realized faces. The ID assigned to Lisp faces is used to | |
225 ;; support faces in display table entries. | |
17386
b251c8820860
(make-face): New arg no-resources.
Richard M. Stallman <rms@gnu.org>
parents:
17173
diff
changeset
|
226 |
25012 | 227 (defun face-id (face &optional frame) |
46267
cd9282aa1d8a
(face-id): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
46146
diff
changeset
|
228 "Return the internal ID of face with name FACE. |
60495 | 229 The optional argument FRAME is ignored, since the internal face ID |
230 of a face name is the same for all frames." | |
25012 | 231 (check-face face) |
232 (get face 'face)) | |
2456 | 233 |
234 | |
235 (defun face-equal (face1 face2 &optional frame) | |
25012 | 236 "Non-nil if faces FACE1 and FACE2 are equal. |
237 Faces are considered equal if all their attributes are equal. | |
62968
88922a349851
(face-equal): Improve argument/docstring consistency.
Juanma Barranquero <lekktu@gmail.com>
parents:
62947
diff
changeset
|
238 If the optional argument FRAME is given, report on FACE1 and FACE2 in that frame. |
88922a349851
(face-equal): Improve argument/docstring consistency.
Juanma Barranquero <lekktu@gmail.com>
parents:
62947
diff
changeset
|
239 If FRAME is t, report on the defaults for FACE1 and FACE2 (for new frames). |
25012 | 240 If FRAME is omitted or nil, use the selected frame." |
241 (internal-lisp-face-equal-p face1 face2 frame)) | |
242 | |
2456 | 243 |
244 (defun face-differs-from-default-p (face &optional frame) | |
55899
4592654cd2e9
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-369
Miles Bader <miles@gnu.org>
parents:
55898
diff
changeset
|
245 "Return non-nil if FACE displays differently from the default face. |
25012 | 246 If the optional argument FRAME is given, report on face FACE in that frame. |
247 If FRAME is t, report on the defaults for face FACE (for new frames). | |
55899
4592654cd2e9
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-369
Miles Bader <miles@gnu.org>
parents:
55898
diff
changeset
|
248 If FRAME is omitted or nil, use the selected frame." |
55902
084530cb1b2f
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents:
55901
diff
changeset
|
249 (let ((attrs |
084530cb1b2f
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents:
55901
diff
changeset
|
250 '(:family :width :height :weight :slant :foreground |
084530cb1b2f
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents:
55901
diff
changeset
|
251 :foreground :background :underline :overline |
084530cb1b2f
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents:
55901
diff
changeset
|
252 :strike-through :box :inverse-video)) |
084530cb1b2f
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents:
55901
diff
changeset
|
253 (differs nil)) |
084530cb1b2f
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents:
55901
diff
changeset
|
254 (while (and attrs (not differs)) |
084530cb1b2f
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents:
55901
diff
changeset
|
255 (let* ((attr (pop attrs)) |
084530cb1b2f
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents:
55901
diff
changeset
|
256 (attr-val (face-attribute face attr frame t))) |
084530cb1b2f
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents:
55901
diff
changeset
|
257 (when (and |
084530cb1b2f
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents:
55901
diff
changeset
|
258 (not (eq attr-val 'unspecified)) |
084530cb1b2f
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents:
55901
diff
changeset
|
259 (display-supports-face-attributes-p (list attr attr-val) |
084530cb1b2f
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents:
55901
diff
changeset
|
260 frame)) |
084530cb1b2f
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents:
55901
diff
changeset
|
261 (setq differs attr)))) |
084530cb1b2f
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-372
Miles Bader <miles@gnu.org>
parents:
55901
diff
changeset
|
262 differs)) |
10379
f9d713e8c77c
(face-nontrivial-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10375
diff
changeset
|
263 |
2456 | 264 |
10379
f9d713e8c77c
(face-nontrivial-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10375
diff
changeset
|
265 (defun face-nontrivial-p (face &optional frame) |
f9d713e8c77c
(face-nontrivial-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10375
diff
changeset
|
266 "True if face FACE has some non-nil attribute. |
25012 | 267 If the optional argument FRAME is given, report on face FACE in that frame. |
268 If FRAME is t, report on the defaults for face FACE (for new frames). | |
269 If FRAME is omitted or nil, use the selected frame." | |
270 (not (internal-lisp-face-empty-p face frame))) | |
271 | |
272 | |
273 | |
274 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
275 ;;; Setting face attributes from X resources. | |
276 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
277 | |
278 (defcustom face-x-resources | |
279 '((:family (".attributeFamily" . "Face.AttributeFamily")) | |
280 (:width (".attributeWidth" . "Face.AttributeWidth")) | |
281 (:height (".attributeHeight" . "Face.AttributeHeight")) | |
282 (:weight (".attributeWeight" . "Face.AttributeWeight")) | |
283 (:slant (".attributeSlant" . "Face.AttributeSlant")) | |
284 (:foreground (".attributeForeground" . "Face.AttributeForeground")) | |
285 (:background (".attributeBackground" . "Face.AttributeBackground")) | |
286 (:overline (".attributeOverline" . "Face.AttributeOverline")) | |
287 (:strike-through (".attributeStrikeThrough" . "Face.AttributeStrikeThrough")) | |
288 (:box (".attributeBox" . "Face.AttributeBox")) | |
289 (:underline (".attributeUnderline" . "Face.AttributeUnderline")) | |
290 (:inverse-video (".attributeInverse" . "Face.AttributeInverse")) | |
291 (:stipple | |
292 (".attributeStipple" . "Face.AttributeStipple") | |
293 (".attributeBackgroundPixmap" . "Face.AttributeBackgroundPixmap")) | |
294 (:bold (".attributeBold" . "Face.AttributeBold")) | |
295 (:italic (".attributeItalic" . "Face.AttributeItalic")) | |
31193
a15c5cb8ec71
(face-x-resources): Add entry for :inherit.
Miles Bader <miles@gnu.org>
parents:
31190
diff
changeset
|
296 (:font (".attributeFont" . "Face.AttributeFont")) |
a15c5cb8ec71
(face-x-resources): Add entry for :inherit.
Miles Bader <miles@gnu.org>
parents:
31190
diff
changeset
|
297 (:inherit (".attributeInherit" . "Face.AttributeInherit"))) |
25012 | 298 "*List of X resources and classes for face attributes. |
299 Each element has the form (ATTRIBUTE ENTRY1 ENTRY2...) where ATTRIBUTE is | |
300 the name of a face attribute, and each ENTRY is a cons of the form | |
39830
aed9c3afb7ed
(describe-face): Call help-setup-xref earlier.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39799
diff
changeset
|
301 \(RESOURCE . CLASS) with RESOURCE being the resource and CLASS being the |
25012 | 302 X resource class for the attribute." |
31528
a461cad7a942
(face-x-resources): Make custom type more specific.
Dave Love <fx@gnu.org>
parents:
31500
diff
changeset
|
303 :type '(repeat (cons symbol (repeat (cons string string)))) |
25012 | 304 :group 'faces) |
305 | |
306 | |
307 (defun set-face-attribute-from-resource (face attribute resource class frame) | |
308 "Set FACE's ATTRIBUTE from X resource RESOURCE, class CLASS on FRAME. | |
309 Value is the attribute value specified by the resource, or nil | |
310 if not present. This function displays a message if the resource | |
311 specifies an invalid attribute." | |
312 (let* ((face-name (face-name face)) | |
313 (value (internal-face-x-get-resource (concat face-name resource) | |
314 class frame))) | |
315 (when value | |
316 (condition-case () | |
317 (internal-set-lisp-face-attribute-from-resource | |
318 face attribute (downcase value) frame) | |
319 (error | |
320 (message "Face %s, frame %s: invalid attribute %s %s from X resource" | |
321 face-name frame attribute value)))) | |
322 value)) | |
323 | |
324 | |
325 (defun set-face-attributes-from-resources (face frame) | |
326 "Set attributes of FACE from X resources for FRAME." | |
32752
923b8d6d8277
Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents:
32734
diff
changeset
|
327 (when (memq (framep frame) '(x w32 mac)) |
25012 | 328 (dolist (definition face-x-resources) |
329 (let ((attribute (car definition))) | |
330 (dolist (entry (cdr definition)) | |
331 (set-face-attribute-from-resource face attribute (car entry) | |
332 (cdr entry) frame)))))) | |
37943 | 333 |
334 | |
25012 | 335 (defun make-face-x-resource-internal (face &optional frame) |
336 "Fill frame-local FACE on FRAME from X resources. | |
337 FRAME nil or not specified means do it for all frames." | |
338 (if (null frame) | |
339 (dolist (frame (frame-list)) | |
340 (set-face-attributes-from-resources face frame)) | |
341 (set-face-attributes-from-resources face frame))) | |
342 | |
343 | |
344 | |
345 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
346 ;;; Retrieving face attributes. | |
347 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
348 | |
349 (defun face-name (face) | |
350 "Return the name of face FACE." | |
351 (symbol-name (check-face face))) | |
352 | |
353 | |
40399
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
354 (defun face-attribute (face attribute &optional frame inherit) |
25012 | 355 "Return the value of FACE's ATTRIBUTE on FRAME. |
356 If the optional argument FRAME is given, report on face FACE in that frame. | |
357 If FRAME is t, report on the defaults for face FACE (for new frames). | |
40399
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
358 If FRAME is omitted or nil, use the selected frame. |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
359 |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
360 If INHERIT is nil, only attributes directly defined by FACE are considered, |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
361 so the return value may be `unspecified', or a relative value. |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
362 If INHERIT is non-nil, FACE's definition of ATTRIBUTE is merged with the |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
363 faces specified by its `:inherit' attribute; however the return value |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
364 may still be `unspecified' or relative. |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
365 If INHERIT is a face or a list of faces, then the result is further merged |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
366 with that face (or faces), until it becomes specified and absolute. |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
367 |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
368 To ensure that the return value is always specified and absolute, use a |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
369 value of `default' for INHERIT; this will resolve any unspecified or |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
370 relative values by merging with the `default' face (which is always |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
371 completely specified)." |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
372 (let ((value (internal-get-lisp-face-attribute face attribute frame))) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
373 (when (and inherit (face-attribute-relative-p attribute value)) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
374 ;; VALUE is relative, so merge with inherited faces |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
375 (let ((inh-from (face-attribute face :inherit frame))) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
376 (unless (or (null inh-from) (eq inh-from 'unspecified)) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
377 (setq value |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
378 (face-attribute-merged-with attribute value inh-from frame))))) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
379 (when (and inherit |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
380 (not (eq inherit t)) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
381 (face-attribute-relative-p attribute value)) |
43711
d15360503e4e
(face-spec-choose): Allow `t' to appear before the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43550
diff
changeset
|
382 ;; We should merge with INHERIT as well |
40399
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
383 (setq value (face-attribute-merged-with attribute value inherit frame))) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
384 value)) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
385 |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
386 (defun face-attribute-merged-with (attribute value faces &optional frame) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
387 "Merges ATTRIBUTE, initially VALUE, with faces from FACES until absolute. |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
388 FACES may be either a single face or a list of faces. |
64539
c94d5f576885
(describe-face): "?\ " -> "?\s".
Juanma Barranquero <lekktu@gmail.com>
parents:
64497
diff
changeset
|
389 \[This is an internal function.]" |
40399
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
390 (cond ((not (face-attribute-relative-p attribute value)) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
391 value) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
392 ((null faces) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
393 value) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
394 ((consp faces) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
395 (face-attribute-merged-with |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
396 attribute |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
397 (face-attribute-merged-with attribute value (car faces) frame) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
398 (cdr faces) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
399 frame)) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
400 (t |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
401 (merge-face-attribute attribute |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
402 value |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
403 (face-attribute faces attribute frame t))))) |
25012 | 404 |
405 | |
40399
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
406 (defmacro face-attribute-specified-or (value &rest body) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
407 "Return VALUE, unless it's `unspecified', in which case evaluate BODY and return the result." |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
408 (let ((temp (make-symbol "value"))) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
409 `(let ((,temp ,value)) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
410 (if (not (eq ,temp 'unspecified)) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
411 ,temp |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
412 ,@body)))) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
413 |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
414 (defun face-foreground (face &optional frame inherit) |
25012 | 415 "Return the foreground color name of FACE, or nil if unspecified. |
416 If the optional argument FRAME is given, report on face FACE in that frame. | |
417 If FRAME is t, report on the defaults for face FACE (for new frames). | |
40399
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
418 If FRAME is omitted or nil, use the selected frame. |
25012 | 419 |
40399
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
420 If INHERIT is nil, only a foreground color directly defined by FACE is |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
421 considered, so the return value may be nil. |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
422 If INHERIT is t, and FACE doesn't define a foreground color, then any |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
423 foreground color that FACE inherits through its `:inherit' attribute |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
424 is considered as well; however the return value may still be nil. |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
425 If INHERIT is a face or a list of faces, then it is used to try to |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
426 resolve an unspecified foreground color. |
25012 | 427 |
40399
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
428 To ensure that a valid color is always returned, use a value of |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
429 `default' for INHERIT; this will resolve any unspecified values by |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
430 merging with the `default' face (which is always completely specified)." |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
431 (face-attribute-specified-or (face-attribute face :foreground frame inherit) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
432 nil)) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
433 |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
434 (defun face-background (face &optional frame inherit) |
25012 | 435 "Return the background color name of FACE, or nil if unspecified. |
436 If the optional argument FRAME is given, report on face FACE in that frame. | |
437 If FRAME is t, report on the defaults for face FACE (for new frames). | |
40399
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
438 If FRAME is omitted or nil, use the selected frame. |
25012 | 439 |
40399
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
440 If INHERIT is nil, only a background color directly defined by FACE is |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
441 considered, so the return value may be nil. |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
442 If INHERIT is t, and FACE doesn't define a background color, then any |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
443 background color that FACE inherits through its `:inherit' attribute |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
444 is considered as well; however the return value may still be nil. |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
445 If INHERIT is a face or a list of faces, then it is used to try to |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
446 resolve an unspecified background color. |
25012 | 447 |
40399
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
448 To ensure that a valid color is always returned, use a value of |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
449 `default' for INHERIT; this will resolve any unspecified values by |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
450 merging with the `default' face (which is always completely specified)." |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
451 (face-attribute-specified-or (face-attribute face :background frame inherit) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
452 nil)) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
453 |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
454 (defun face-stipple (face &optional frame inherit) |
25012 | 455 "Return the stipple pixmap name of FACE, or nil if unspecified. |
456 If the optional argument FRAME is given, report on face FACE in that frame. | |
457 If FRAME is t, report on the defaults for face FACE (for new frames). | |
40399
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
458 If FRAME is omitted or nil, use the selected frame. |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
459 |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
460 If INHERIT is nil, only a stipple directly defined by FACE is |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
461 considered, so the return value may be nil. |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
462 If INHERIT is t, and FACE doesn't define a stipple, then any stipple |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
463 that FACE inherits through its `:inherit' attribute is considered as |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
464 well; however the return value may still be nil. |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
465 If INHERIT is a face or a list of faces, then it is used to try to |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
466 resolve an unspecified stipple. |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
467 |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
468 To ensure that a valid stipple or nil is always returned, use a value of |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
469 `default' for INHERIT; this will resolve any unspecified values by merging |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
470 with the `default' face (which is always completely specified)." |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
471 (face-attribute-specified-or (face-attribute face :stipple frame inherit) |
3e67855bb4bf
(face-attribute): Add INHERIT argument, consider face inheritance if non-nil.
Miles Bader <miles@gnu.org>
parents:
40351
diff
changeset
|
472 nil)) |
25012 | 473 |
474 | |
475 (defalias 'face-background-pixmap 'face-stipple) | |
476 | |
477 | |
478 (defun face-underline-p (face &optional frame) | |
479 "Return non-nil if FACE is underlined. | |
480 If the optional argument FRAME is given, report on face FACE in that frame. | |
481 If FRAME is t, report on the defaults for face FACE (for new frames). | |
482 If FRAME is omitted or nil, use the selected frame." | |
483 (eq (face-attribute face :underline frame) t)) | |
484 | |
485 | |
486 (defun face-inverse-video-p (face &optional frame) | |
487 "Return non-nil if FACE is in inverse video on FRAME. | |
488 If the optional argument FRAME is given, report on face FACE in that frame. | |
489 If FRAME is t, report on the defaults for face FACE (for new frames). | |
490 If FRAME is omitted or nil, use the selected frame." | |
491 (eq (face-attribute face :inverse-video frame) t)) | |
492 | |
493 | |
494 (defun face-bold-p (face &optional frame) | |
495 "Return non-nil if the font of FACE is bold on FRAME. | |
496 If the optional argument FRAME is given, report on face FACE in that frame. | |
497 If FRAME is t, report on the defaults for face FACE (for new frames). | |
498 If FRAME is omitted or nil, use the selected frame. | |
499 Use `face-attribute' for finer control." | |
500 (let ((bold (face-attribute face :weight frame))) | |
25561
67c224f5cc1a
(face-bold-p): Don't return t if face has lighter
Gerd Moellmann <gerd@gnu.org>
parents:
25545
diff
changeset
|
501 (memq bold '(semi-bold bold extra-bold ultra-bold)))) |
25012 | 502 |
503 | |
504 (defun face-italic-p (face &optional frame) | |
505 "Return non-nil if the font of FACE is italic on FRAME. | |
506 If the optional argument FRAME is given, report on face FACE in that frame. | |
507 If FRAME is t, report on the defaults for face FACE (for new frames). | |
508 If FRAME is omitted or nil, use the selected frame. | |
509 Use `face-attribute' for finer control." | |
510 (let ((italic (face-attribute face :slant frame))) | |
25616
4dbea85f5af0
(face-italic-p): Return t only for values `italic'
Gerd Moellmann <gerd@gnu.org>
parents:
25588
diff
changeset
|
511 (memq italic '(italic oblique)))) |
37943 | 512 |
25012 | 513 |
514 | |
515 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
516 ;;; Face documentation. | |
517 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
518 | |
519 (defun face-documentation (face) | |
63660
47c90f7c23df
(face-documentation, set-face-attribute)
Glenn Morris <rgm@gnu.org>
parents:
63650
diff
changeset
|
520 "Get the documentation string for FACE. |
47c90f7c23df
(face-documentation, set-face-attribute)
Glenn Morris <rgm@gnu.org>
parents:
63650
diff
changeset
|
521 If FACE is a face-alias, get the documentation for the target face." |
47c90f7c23df
(face-documentation, set-face-attribute)
Glenn Morris <rgm@gnu.org>
parents:
63650
diff
changeset
|
522 (let ((alias (get face 'face-alias)) |
47c90f7c23df
(face-documentation, set-face-attribute)
Glenn Morris <rgm@gnu.org>
parents:
63650
diff
changeset
|
523 doc) |
47c90f7c23df
(face-documentation, set-face-attribute)
Glenn Morris <rgm@gnu.org>
parents:
63650
diff
changeset
|
524 (if alias |
47c90f7c23df
(face-documentation, set-face-attribute)
Glenn Morris <rgm@gnu.org>
parents:
63650
diff
changeset
|
525 (progn |
47c90f7c23df
(face-documentation, set-face-attribute)
Glenn Morris <rgm@gnu.org>
parents:
63650
diff
changeset
|
526 (setq doc (get alias 'face-documentation)) |
47c90f7c23df
(face-documentation, set-face-attribute)
Glenn Morris <rgm@gnu.org>
parents:
63650
diff
changeset
|
527 (format "%s is an alias for the face `%s'.%s" face alias |
47c90f7c23df
(face-documentation, set-face-attribute)
Glenn Morris <rgm@gnu.org>
parents:
63650
diff
changeset
|
528 (if doc (format "\n%s" doc) |
47c90f7c23df
(face-documentation, set-face-attribute)
Glenn Morris <rgm@gnu.org>
parents:
63650
diff
changeset
|
529 ""))) |
47c90f7c23df
(face-documentation, set-face-attribute)
Glenn Morris <rgm@gnu.org>
parents:
63650
diff
changeset
|
530 (get face 'face-documentation)))) |
25012 | 531 |
532 | |
533 (defun set-face-documentation (face string) | |
534 "Set the documentation string for FACE to STRING." | |
26927
27d6c0e07ea8
(set-face-attribute): Purecopy the attributes set.
Dave Love <fx@gnu.org>
parents:
26902
diff
changeset
|
535 ;; Perhaps the text should go in DOC. |
26657
b5c0d55411ad
(set-face-documentation): Purecopy STRING.
Dave Love <fx@gnu.org>
parents:
26353
diff
changeset
|
536 (put face 'face-documentation (purecopy string))) |
25012 | 537 |
538 | |
539 (defalias 'face-doc-string 'face-documentation) | |
540 (defalias 'set-face-doc-string 'set-face-documentation) | |
541 | |
542 | |
543 | |
544 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
545 ;; Setting face attributes. | |
546 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
547 | |
548 | |
66360
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
549 (defvar inhibit-face-set-after-frame-default nil |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
550 "If non-nil, that tells `face-set-after-frame-default' to do nothing.") |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
551 |
25012 | 552 (defun set-face-attribute (face frame &rest args) |
553 "Set attributes of FACE on FRAME from ARGS. | |
554 | |
555 FRAME nil means change attributes on all frames. FRAME t means change | |
556 the default for new frames (this is done automatically each time an | |
557 attribute is changed on all frames). | |
558 | |
559 ARGS must come in pairs ATTRIBUTE VALUE. ATTRIBUTE must be a valid | |
560 face attribute name. All attributes can be set to `unspecified'; | |
561 this fact is not further mentioned below. | |
562 | |
563 The following attributes are recognized: | |
564 | |
565 `:family' | |
566 | |
567 VALUE must be a string specifying the font family, e.g. ``courier'', | |
568 or a fontset alias name. If a font family is specified, wild-cards `*' | |
569 and `?' are allowed. | |
570 | |
571 `:width' | |
572 | |
573 VALUE specifies the relative proportionate width of the font to use. | |
574 It must be one of the symbols `ultra-condensed', `extra-condensed', | |
575 `condensed', `semi-condensed', `normal', `semi-expanded', `expanded', | |
576 `extra-expanded', or `ultra-expanded'. | |
577 | |
578 `:height' | |
579 | |
31190 | 580 VALUE must be either an integer specifying the height of the font to use |
581 in 1/10 pt, a floating point number specifying the amount by which to | |
582 scale any underlying face, or a function, which is called with the old | |
583 height (from the underlying face), and should return the new height. | |
25012 | 584 |
585 `:weight' | |
586 | |
587 VALUE specifies the weight of the font to use. It must be one of the | |
588 symbols `ultra-bold', `extra-bold', `bold', `semi-bold', `normal', | |
589 `semi-light', `light', `extra-light', `ultra-light'. | |
590 | |
591 `:slant' | |
592 | |
593 VALUE specifies the slant of the font to use. It must be one of the | |
594 symbols `italic', `oblique', `normal', `reverse-italic', or | |
595 `reverse-oblique'. | |
596 | |
597 `:foreground', `:background' | |
598 | |
599 VALUE must be a color name, a string. | |
600 | |
601 `:underline' | |
602 | |
603 VALUE specifies whether characters in FACE should be underlined. If | |
604 VALUE is t, underline with foreground color of the face. If VALUE is | |
605 a string, underline with that color. If VALUE is nil, explicitly | |
606 don't underline. | |
607 | |
608 `:overline' | |
609 | |
610 VALUE specifies whether characters in FACE should be overlined. If | |
611 VALUE is t, overline with foreground color of the face. If VALUE is a | |
612 string, overline with that color. If VALUE is nil, explicitly don't | |
613 overline. | |
614 | |
615 `:strike-through' | |
616 | |
617 VALUE specifies whether characters in FACE should be drawn with a line | |
618 striking through them. If VALUE is t, use the foreground color of the | |
619 face. If VALUE is a string, strike-through with that color. If VALUE | |
620 is nil, explicitly don't strike through. | |
621 | |
622 `:box' | |
623 | |
624 VALUE specifies whether characters in FACE should have a box drawn | |
625 around them. If VALUE is nil, explicitly don't draw boxes. If | |
626 VALUE is t, draw a box with lines of width 1 in the foreground color | |
627 of the face. If VALUE is a string, the string must be a color name, | |
628 and the box is drawn in that color with a line width of 1. Otherwise, | |
629 VALUE must be a property list of the form `(:line-width WIDTH | |
630 :color COLOR :style STYLE)'. If a keyword/value pair is missing from | |
631 the property list, a default value will be used for the value, as | |
632 specified below. WIDTH specifies the width of the lines to draw; it | |
36009
3f009240cc7d
(set-face-attribute): Describe the case of a negative
Kenichi Handa <handa@m17n.org>
parents:
34682
diff
changeset
|
633 defaults to 1. If WIDTH is negative, the absolute value is the width |
3f009240cc7d
(set-face-attribute): Describe the case of a negative
Kenichi Handa <handa@m17n.org>
parents:
34682
diff
changeset
|
634 of the lines, and draw top/bottom lines inside the characters area, |
3f009240cc7d
(set-face-attribute): Describe the case of a negative
Kenichi Handa <handa@m17n.org>
parents:
34682
diff
changeset
|
635 not around it. COLOR is the name of the color to draw in, default is |
25012 | 636 the foreground color of the face for simple boxes, and the background |
637 color of the face for 3D boxes. STYLE specifies whether a 3D box | |
638 should be draw. If STYLE is `released-button', draw a box looking | |
639 like a released 3D button. If STYLE is `pressed-button' draw a box | |
640 that appears like a pressed button. If STYLE is nil, the default if | |
641 the property list doesn't contain a style specification, draw a 2D | |
642 box. | |
643 | |
644 `:inverse-video' | |
645 | |
646 VALUE specifies whether characters in FACE should be displayed in | |
28840 | 647 inverse video. VALUE must be one of t or nil. |
25012 | 648 |
649 `:stipple' | |
650 | |
651 If VALUE is a string, it must be the name of a file of pixmap data. | |
652 The directories listed in the `x-bitmap-file-path' variable are | |
653 searched. Alternatively, VALUE may be a list of the form (WIDTH | |
654 HEIGHT DATA) where WIDTH and HEIGHT are the size in pixels, and DATA | |
655 is a string containing the raw bits of the bitmap. VALUE nil means | |
656 explicitly don't use a stipple pattern. | |
657 | |
658 For convenience, attributes `:family', `:width', `:height', `:weight', | |
659 and `:slant' may also be set in one step from an X font name: | |
660 | |
661 `:font' | |
662 | |
663 Set font-related face attributes from VALUE. VALUE must be a valid | |
664 XLFD font name. If it is a font name pattern, the first matching font | |
665 will be used. | |
666 | |
667 For compatibility with Emacs 20, keywords `:bold' and `:italic' can | |
668 be used to specify that a bold or italic font should be used. VALUE | |
31190 | 669 must be t or nil in that case. A value of `unspecified' is not allowed. |
670 | |
671 `:inherit' | |
672 | |
673 VALUE is the name of a face from which to inherit attributes, or a list | |
674 of face names. Attributes from inherited faces are merged into the face | |
675 like an underlying face would be, with higher priority than underlying faces." | |
31439
d7a98f35b441
(set-face-attribute): Simplify by calling
Gerd Moellmann <gerd@gnu.org>
parents:
31401
diff
changeset
|
676 (let ((where (if (null frame) 0 frame))) |
d7a98f35b441
(set-face-attribute): Simplify by calling
Gerd Moellmann <gerd@gnu.org>
parents:
31401
diff
changeset
|
677 (setq args (purecopy args)) |
51280
c2efaecb5d8f
(set-face-attribute): Set face-modified prop to t
Richard M. Stallman <rms@gnu.org>
parents:
51248
diff
changeset
|
678 ;; If we set the new-frame defaults, this face is modified outside Custom. |
c2efaecb5d8f
(set-face-attribute): Set face-modified prop to t
Richard M. Stallman <rms@gnu.org>
parents:
51248
diff
changeset
|
679 (if (memq where '(0 t)) |
63660
47c90f7c23df
(face-documentation, set-face-attribute)
Glenn Morris <rgm@gnu.org>
parents:
63650
diff
changeset
|
680 (put (or (get face 'face-alias) face) 'face-modified t)) |
31439
d7a98f35b441
(set-face-attribute): Simplify by calling
Gerd Moellmann <gerd@gnu.org>
parents:
31401
diff
changeset
|
681 (while args |
66360
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
682 ;; Don't recursively set the attributes from the frame's font param |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
683 ;; when we update the frame's font param fro the attributes. |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
684 (let ((inhibit-face-set-after-frame-default t)) |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
685 (internal-set-lisp-face-attribute face (car args) |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
686 (purecopy (cadr args)) |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
687 where)) |
31439
d7a98f35b441
(set-face-attribute): Simplify by calling
Gerd Moellmann <gerd@gnu.org>
parents:
31401
diff
changeset
|
688 (setq args (cdr (cdr args)))))) |
25012 | 689 |
690 | |
26337
6bf33b333eb2
(make-face-bold, make-face-unbold, make-face-italic)
Gerd Moellmann <gerd@gnu.org>
parents:
25947
diff
changeset
|
691 (defun make-face-bold (face &optional frame noerror) |
25012 | 692 "Make the font of FACE be bold, if possible. |
693 FRAME nil or not specified means change face on all frames. | |
26337
6bf33b333eb2
(make-face-bold, make-face-unbold, make-face-italic)
Gerd Moellmann <gerd@gnu.org>
parents:
25947
diff
changeset
|
694 Argument NOERROR is ignored and retained for compatibility. |
25012 | 695 Use `set-face-attribute' for finer control of the font weight." |
40456 | 696 (interactive (list (read-face-name "Make which face bold"))) |
25012 | 697 (set-face-attribute face frame :weight 'bold)) |
698 | |
699 | |
26337
6bf33b333eb2
(make-face-bold, make-face-unbold, make-face-italic)
Gerd Moellmann <gerd@gnu.org>
parents:
25947
diff
changeset
|
700 (defun make-face-unbold (face &optional frame noerror) |
25012 | 701 "Make the font of FACE be non-bold, if possible. |
26337
6bf33b333eb2
(make-face-bold, make-face-unbold, make-face-italic)
Gerd Moellmann <gerd@gnu.org>
parents:
25947
diff
changeset
|
702 FRAME nil or not specified means change face on all frames. |
6bf33b333eb2
(make-face-bold, make-face-unbold, make-face-italic)
Gerd Moellmann <gerd@gnu.org>
parents:
25947
diff
changeset
|
703 Argument NOERROR is ignored and retained for compatibility." |
40456 | 704 (interactive (list (read-face-name "Make which face non-bold"))) |
25012 | 705 (set-face-attribute face frame :weight 'normal)) |
706 | |
37943 | 707 |
26337
6bf33b333eb2
(make-face-bold, make-face-unbold, make-face-italic)
Gerd Moellmann <gerd@gnu.org>
parents:
25947
diff
changeset
|
708 (defun make-face-italic (face &optional frame noerror) |
25012 | 709 "Make the font of FACE be italic, if possible. |
710 FRAME nil or not specified means change face on all frames. | |
26337
6bf33b333eb2
(make-face-bold, make-face-unbold, make-face-italic)
Gerd Moellmann <gerd@gnu.org>
parents:
25947
diff
changeset
|
711 Argument NOERROR is ignored and retained for compatibility. |
25012 | 712 Use `set-face-attribute' for finer control of the font slant." |
40456 | 713 (interactive (list (read-face-name "Make which face italic"))) |
25012 | 714 (set-face-attribute face frame :slant 'italic)) |
715 | |
716 | |
26337
6bf33b333eb2
(make-face-bold, make-face-unbold, make-face-italic)
Gerd Moellmann <gerd@gnu.org>
parents:
25947
diff
changeset
|
717 (defun make-face-unitalic (face &optional frame noerror) |
25012 | 718 "Make the font of FACE be non-italic, if possible. |
28840 | 719 FRAME nil or not specified means change face on all frames. |
720 Argument NOERROR is ignored and retained for compatibility." | |
40456 | 721 (interactive (list (read-face-name "Make which face non-italic"))) |
25012 | 722 (set-face-attribute face frame :slant 'normal)) |
723 | |
37943 | 724 |
26337
6bf33b333eb2
(make-face-bold, make-face-unbold, make-face-italic)
Gerd Moellmann <gerd@gnu.org>
parents:
25947
diff
changeset
|
725 (defun make-face-bold-italic (face &optional frame noerror) |
25012 | 726 "Make the font of FACE be bold and italic, if possible. |
727 FRAME nil or not specified means change face on all frames. | |
26337
6bf33b333eb2
(make-face-bold, make-face-unbold, make-face-italic)
Gerd Moellmann <gerd@gnu.org>
parents:
25947
diff
changeset
|
728 Argument NOERROR is ignored and retained for compatibility. |
25012 | 729 Use `set-face-attribute' for finer control of font weight and slant." |
40456 | 730 (interactive (list (read-face-name "Make which face bold-italic"))) |
25012 | 731 (set-face-attribute face frame :weight 'bold :slant 'italic)) |
732 | |
733 | |
734 (defun set-face-font (face font &optional frame) | |
735 "Change font-related attributes of FACE to those of FONT (a string). | |
736 FRAME nil or not specified means change face on all frames. | |
737 This sets the attributes `:family', `:width', `:height', `:weight', | |
738 and `:slant'. When called interactively, prompt for the face and font." | |
739 (interactive (read-face-and-attribute :font)) | |
740 (set-face-attribute face frame :font font)) | |
741 | |
742 | |
743 ;; Implementation note: Emulating gray background colors with a | |
744 ;; stipple pattern is now part of the face realization process, and is | |
745 ;; done in C depending on the frame on which the face is realized. | |
746 | |
747 (defun set-face-background (face color &optional frame) | |
748 "Change the background color of face FACE to COLOR (a string). | |
749 FRAME nil or not specified means change face on all frames. | |
59281
95516eef1d5b
(set-face-background, set-face-foreground): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
59262
diff
changeset
|
750 COLOR can be a system-defined color name (see `list-colors-display') |
95516eef1d5b
(set-face-background, set-face-foreground): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
59262
diff
changeset
|
751 or a hex spec of the form #RRGGBB. |
95516eef1d5b
(set-face-background, set-face-foreground): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
59262
diff
changeset
|
752 When called interactively, prompts for the face and color." |
25012 | 753 (interactive (read-face-and-attribute :background)) |
36060
d9b4d1370073
(set-face-background, set-face-foreground)
Miles Bader <miles@gnu.org>
parents:
36035
diff
changeset
|
754 (set-face-attribute face frame :background (or color 'unspecified))) |
25012 | 755 |
756 | |
757 (defun set-face-foreground (face color &optional frame) | |
758 "Change the foreground color of face FACE to COLOR (a string). | |
759 FRAME nil or not specified means change face on all frames. | |
59281
95516eef1d5b
(set-face-background, set-face-foreground): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
59262
diff
changeset
|
760 COLOR can be a system-defined color name (see `list-colors-display') |
95516eef1d5b
(set-face-background, set-face-foreground): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
59262
diff
changeset
|
761 or a hex spec of the form #RRGGBB. |
95516eef1d5b
(set-face-background, set-face-foreground): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
59262
diff
changeset
|
762 When called interactively, prompts for the face and color." |
25012 | 763 (interactive (read-face-and-attribute :foreground)) |
36060
d9b4d1370073
(set-face-background, set-face-foreground)
Miles Bader <miles@gnu.org>
parents:
36035
diff
changeset
|
764 (set-face-attribute face frame :foreground (or color 'unspecified))) |
25012 | 765 |
766 | |
767 (defun set-face-stipple (face stipple &optional frame) | |
768 "Change the stipple pixmap of face FACE to STIPPLE. | |
769 FRAME nil or not specified means change face on all frames. | |
28840 | 770 STIPPLE should be a string, the name of a file of pixmap data. |
25012 | 771 The directories listed in the `x-bitmap-file-path' variable are searched. |
772 | |
773 Alternatively, STIPPLE may be a list of the form (WIDTH HEIGHT DATA) | |
774 where WIDTH and HEIGHT are the size in pixels, | |
775 and DATA is a string, containing the raw bits of the bitmap." | |
776 (interactive (read-face-and-attribute :stipple)) | |
36060
d9b4d1370073
(set-face-background, set-face-foreground)
Miles Bader <miles@gnu.org>
parents:
36035
diff
changeset
|
777 (set-face-attribute face frame :stipple (or stipple 'unspecified))) |
25012 | 778 |
779 | |
65068
6606e83775f0
(set-face-underline): Delete this duplicate function
Juri Linkov <juri@jurta.org>
parents:
64762
diff
changeset
|
780 (defun set-face-underline-p (face underline-p &optional frame) |
25012 | 781 "Specify whether face FACE is underlined. |
782 UNDERLINE nil means FACE explicitly doesn't underline. | |
783 UNDERLINE non-nil means FACE explicitly does underlining | |
784 with the same of the foreground color. | |
785 If UNDERLINE is a string, underline with the color named UNDERLINE. | |
786 FRAME nil or not specified means change face on all frames. | |
787 Use `set-face-attribute' to ``unspecify'' underlining." | |
788 (interactive | |
789 (let ((list (read-face-and-attribute :underline))) | |
790 (list (car list) (eq (car (cdr list)) t)))) | |
65068
6606e83775f0
(set-face-underline): Delete this duplicate function
Juri Linkov <juri@jurta.org>
parents:
64762
diff
changeset
|
791 (set-face-attribute face frame :underline underline-p)) |
25012 | 792 |
65068
6606e83775f0
(set-face-underline): Delete this duplicate function
Juri Linkov <juri@jurta.org>
parents:
64762
diff
changeset
|
793 (define-obsolete-function-alias 'set-face-underline |
6606e83775f0
(set-face-underline): Delete this duplicate function
Juri Linkov <juri@jurta.org>
parents:
64762
diff
changeset
|
794 'set-face-underline-p "22.1") |
25012 | 795 |
796 | |
797 (defun set-face-inverse-video-p (face inverse-video-p &optional frame) | |
798 "Specify whether face FACE is in inverse video. | |
799 INVERSE-VIDEO-P non-nil means FACE displays explicitly in inverse video. | |
800 INVERSE-VIDEO-P nil means FACE explicitly is not in inverse video. | |
801 FRAME nil or not specified means change face on all frames. | |
802 Use `set-face-attribute' to ``unspecify'' the inverse video attribute." | |
803 (interactive | |
804 (let ((list (read-face-and-attribute :inverse-video))) | |
805 (list (car list) (eq (car (cdr list)) t)))) | |
806 (set-face-attribute face frame :inverse-video inverse-video-p)) | |
807 | |
808 | |
809 (defun set-face-bold-p (face bold-p &optional frame) | |
810 "Specify whether face FACE is bold. | |
811 BOLD-P non-nil means FACE should explicitly display bold. | |
812 BOLD-P nil means FACE should explicitly display non-bold. | |
813 FRAME nil or not specified means change face on all frames. | |
814 Use `set-face-attribute' or `modify-face' for finer control." | |
815 (if (null bold-p) | |
816 (make-face-unbold face frame) | |
817 (make-face-bold face frame))) | |
818 | |
819 | |
820 (defun set-face-italic-p (face italic-p &optional frame) | |
821 "Specify whether face FACE is italic. | |
822 ITALIC-P non-nil means FACE should explicitly display italic. | |
823 ITALIC-P nil means FACE should explicitly display non-italic. | |
824 FRAME nil or not specified means change face on all frames. | |
825 Use `set-face-attribute' or `modify-face' for finer control." | |
826 (if (null italic-p) | |
827 (make-face-unitalic face frame) | |
828 (make-face-italic face frame))) | |
829 | |
830 | |
831 (defalias 'set-face-background-pixmap 'set-face-stipple) | |
10379
f9d713e8c77c
(face-nontrivial-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10375
diff
changeset
|
832 |
2456 | 833 |
834 (defun invert-face (face &optional frame) | |
25012 | 835 "Swap the foreground and background colors of FACE. |
40454
ce83eda9592d
(invert-face): Check for 'unspecified, not for nil,
Eli Zaretskii <eliz@gnu.org>
parents:
40399
diff
changeset
|
836 If FRAME is omitted or nil, it means change face on all frames. |
25012 | 837 If FACE specifies neither foreground nor background color, |
838 set its foreground and background to the background and foreground | |
839 of the default face. Value is FACE." | |
40456 | 840 (interactive (list (read-face-name "Invert face"))) |
25012 | 841 (let ((fg (face-attribute face :foreground frame)) |
842 (bg (face-attribute face :background frame))) | |
40454
ce83eda9592d
(invert-face): Check for 'unspecified, not for nil,
Eli Zaretskii <eliz@gnu.org>
parents:
40399
diff
changeset
|
843 (if (not (and (eq fg 'unspecified) (eq bg 'unspecified))) |
25012 | 844 (set-face-attribute face frame :foreground bg :background fg) |
845 (set-face-attribute face frame | |
846 :foreground | |
847 (face-attribute 'default :background frame) | |
848 :background | |
849 (face-attribute 'default :foreground frame)))) | |
2456 | 850 face) |
851 | |
25012 | 852 |
853 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
854 ;;; Interactively modifying faces. | |
855 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
2456 | 856 |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
857 (defun read-face-name (prompt &optional string-describing-default multiple) |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
858 "Read a face, defaulting to the face or faces on the char after point. |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
859 If it has a `read-face-name' property, that overrides the `face' property. |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
860 PROMPT describes what you will do with the face (don't end in a space). |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
861 STRING-DESCRIBING-DEFAULT describes what default you will use |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
862 if this function returns nil. |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
863 If MULTIPLE is non-nil, return a list of faces (possibly only one). |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
864 Otherwise, return a single face." |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
865 (let ((faceprop (or (get-char-property (point) 'read-face-name) |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
866 (get-char-property (point) 'face))) |
63382
9cbfa983c1cf
(read-face-name): Use complete-in-turn complete non-aliases
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
63311
diff
changeset
|
867 (aliasfaces nil) |
9cbfa983c1cf
(read-face-name): Use complete-in-turn complete non-aliases
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
63311
diff
changeset
|
868 (nonaliasfaces nil) |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
869 faces) |
63984
37ff9b4c3659
(read-face-name): Put the code for getting a face name
Juri Linkov <juri@jurta.org>
parents:
63881
diff
changeset
|
870 ;; Try to get a face name from the buffer. |
37ff9b4c3659
(read-face-name): Put the code for getting a face name
Juri Linkov <juri@jurta.org>
parents:
63881
diff
changeset
|
871 (if (memq (intern-soft (thing-at-point 'symbol)) (face-list)) |
37ff9b4c3659
(read-face-name): Put the code for getting a face name
Juri Linkov <juri@jurta.org>
parents:
63881
diff
changeset
|
872 (setq faces (list (intern-soft (thing-at-point 'symbol))))) |
37ff9b4c3659
(read-face-name): Put the code for getting a face name
Juri Linkov <juri@jurta.org>
parents:
63881
diff
changeset
|
873 ;; Add the named faces that the `face' property uses. |
59262
c9bf2e1b7e1a
(read-face-name): Don't treat an attribute spec as a list of faces.
Richard M. Stallman <rms@gnu.org>
parents:
59077
diff
changeset
|
874 (if (and (listp faceprop) |
c9bf2e1b7e1a
(read-face-name): Don't treat an attribute spec as a list of faces.
Richard M. Stallman <rms@gnu.org>
parents:
59077
diff
changeset
|
875 ;; Don't treat an attribute spec as a list of faces. |
c9bf2e1b7e1a
(read-face-name): Don't treat an attribute spec as a list of faces.
Richard M. Stallman <rms@gnu.org>
parents:
59077
diff
changeset
|
876 (not (keywordp (car faceprop))) |
c9bf2e1b7e1a
(read-face-name): Don't treat an attribute spec as a list of faces.
Richard M. Stallman <rms@gnu.org>
parents:
59077
diff
changeset
|
877 (not (memq (car faceprop) '(foreground-color background-color)))) |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
878 (dolist (f faceprop) |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
879 (if (symbolp f) |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
880 (push f faces))) |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
881 (if (symbolp faceprop) |
59262
c9bf2e1b7e1a
(read-face-name): Don't treat an attribute spec as a list of faces.
Richard M. Stallman <rms@gnu.org>
parents:
59077
diff
changeset
|
882 (push faceprop faces))) |
64724
719375653e09
(read-face-name): Delete duplicate faces.
Juri Linkov <juri@jurta.org>
parents:
64539
diff
changeset
|
883 (delete-dups faces) |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
884 |
63382
9cbfa983c1cf
(read-face-name): Use complete-in-turn complete non-aliases
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
63311
diff
changeset
|
885 ;; Build up the completion tables. |
9cbfa983c1cf
(read-face-name): Use complete-in-turn complete non-aliases
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
63311
diff
changeset
|
886 (mapatoms (lambda (s) |
9cbfa983c1cf
(read-face-name): Use complete-in-turn complete non-aliases
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
63311
diff
changeset
|
887 (if (custom-facep s) |
9cbfa983c1cf
(read-face-name): Use complete-in-turn complete non-aliases
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
63311
diff
changeset
|
888 (if (get s 'face-alias) |
9cbfa983c1cf
(read-face-name): Use complete-in-turn complete non-aliases
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
63311
diff
changeset
|
889 (push (symbol-name s) aliasfaces) |
9cbfa983c1cf
(read-face-name): Use complete-in-turn complete non-aliases
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
63311
diff
changeset
|
890 (push (symbol-name s) nonaliasfaces))))) |
9cbfa983c1cf
(read-face-name): Use complete-in-turn complete non-aliases
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
63311
diff
changeset
|
891 |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
892 ;; If we only want one, and the default is more than one, |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
893 ;; discard the unwanted ones now. |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
894 (unless multiple |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
895 (if faces |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
896 (setq faces (list (car faces))))) |
63984
37ff9b4c3659
(read-face-name): Put the code for getting a face name
Juri Linkov <juri@jurta.org>
parents:
63881
diff
changeset
|
897 (require 'crm) |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
898 (let* ((input |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
899 ;; Read the input. |
63984
37ff9b4c3659
(read-face-name): Put the code for getting a face name
Juri Linkov <juri@jurta.org>
parents:
63881
diff
changeset
|
900 (completing-read-multiple |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
901 (if (or faces string-describing-default) |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
902 (format "%s (default %s): " prompt |
63984
37ff9b4c3659
(read-face-name): Put the code for getting a face name
Juri Linkov <juri@jurta.org>
parents:
63881
diff
changeset
|
903 (if faces (mapconcat 'symbol-name faces ",") |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
904 string-describing-default)) |
44896
fc1fdc78c3eb
(read-face-name): Format the prompt correctly when there's no default.
Miles Bader <miles@gnu.org>
parents:
44892
diff
changeset
|
905 (format "%s: " prompt)) |
63984
37ff9b4c3659
(read-face-name): Put the code for getting a face name
Juri Linkov <juri@jurta.org>
parents:
63881
diff
changeset
|
906 (complete-in-turn nonaliasfaces aliasfaces) |
37ff9b4c3659
(read-face-name): Put the code for getting a face name
Juri Linkov <juri@jurta.org>
parents:
63881
diff
changeset
|
907 nil t nil nil |
37ff9b4c3659
(read-face-name): Put the code for getting a face name
Juri Linkov <juri@jurta.org>
parents:
63881
diff
changeset
|
908 (if faces (mapconcat 'symbol-name faces ",")))) |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
909 ;; Canonicalize the output. |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
910 (output |
63984
37ff9b4c3659
(read-face-name): Put the code for getting a face name
Juri Linkov <juri@jurta.org>
parents:
63881
diff
changeset
|
911 (cond ((or (equal input "") (equal input '(""))) |
37ff9b4c3659
(read-face-name): Put the code for getting a face name
Juri Linkov <juri@jurta.org>
parents:
63881
diff
changeset
|
912 faces) |
37ff9b4c3659
(read-face-name): Put the code for getting a face name
Juri Linkov <juri@jurta.org>
parents:
63881
diff
changeset
|
913 ((stringp input) |
37ff9b4c3659
(read-face-name): Put the code for getting a face name
Juri Linkov <juri@jurta.org>
parents:
63881
diff
changeset
|
914 (mapcar 'intern (split-string input ", *" t))) |
37ff9b4c3659
(read-face-name): Put the code for getting a face name
Juri Linkov <juri@jurta.org>
parents:
63881
diff
changeset
|
915 ((listp input) |
37ff9b4c3659
(read-face-name): Put the code for getting a face name
Juri Linkov <juri@jurta.org>
parents:
63881
diff
changeset
|
916 (mapcar 'intern input)) |
37ff9b4c3659
(read-face-name): Put the code for getting a face name
Juri Linkov <juri@jurta.org>
parents:
63881
diff
changeset
|
917 (input)))) |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
918 ;; Return either a list of faces or just one face. |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
919 (if multiple |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
920 output |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
921 (car output))))) |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
922 |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
923 |
25012 | 924 (defun face-valid-attribute-values (attribute &optional frame) |
925 "Return valid values for face attribute ATTRIBUTE. | |
926 The optional argument FRAME is used to determine available fonts | |
927 and colors. If it is nil or not specified, the selected frame is | |
928 used. Value is an alist of (NAME . VALUE) if ATTRIBUTE expects a value | |
929 out of a set of discrete values. Value is `integerp' if ATTRIBUTE expects | |
930 an integer value." | |
37943 | 931 (let ((valid |
932 (case attribute | |
933 (:family | |
934 (if window-system | |
935 (mapcar #'(lambda (x) (cons (car x) (car x))) | |
936 (x-font-family-list)) | |
937 ;; Only one font on TTYs. | |
938 (list (cons "default" "default")))) | |
939 ((:width :weight :slant :inverse-video) | |
940 (mapcar #'(lambda (x) (cons (symbol-name x) x)) | |
941 (internal-lisp-face-attribute-values attribute))) | |
942 ((:underline :overline :strike-through :box) | |
943 (if window-system | |
944 (nconc (mapcar #'(lambda (x) (cons (symbol-name x) x)) | |
945 (internal-lisp-face-attribute-values attribute)) | |
946 (mapcar #'(lambda (c) (cons c c)) | |
947 (x-defined-colors frame))) | |
948 (mapcar #'(lambda (x) (cons (symbol-name x) x)) | |
949 (internal-lisp-face-attribute-values attribute)))) | |
950 ((:foreground :background) | |
951 (mapcar #'(lambda (c) (cons c c)) | |
952 (defined-colors frame))) | |
953 ((:height) | |
954 'integerp) | |
955 (:stipple | |
956 (and (memq window-system '(x w32 mac)) | |
957 (mapcar #'list | |
958 (apply #'nconc | |
959 (mapcar (lambda (dir) | |
960 (and (file-readable-p dir) | |
961 (file-directory-p dir) | |
962 (directory-files dir))) | |
963 x-bitmap-file-path))))) | |
964 (:inherit | |
965 (cons '("none" . nil) | |
966 (mapcar #'(lambda (c) (cons (symbol-name c) c)) | |
967 (face-list)))) | |
968 (t | |
969 (error "Internal error"))))) | |
31190 | 970 (if (and (listp valid) (not (memq attribute '(:inherit)))) |
25245
ef080d2576f9
(face-valid-attribute-values): Return an alist for
Gerd Moellmann <gerd@gnu.org>
parents:
25210
diff
changeset
|
971 (nconc (list (cons "unspecified" 'unspecified)) valid) |
ef080d2576f9
(face-valid-attribute-values): Return an alist for
Gerd Moellmann <gerd@gnu.org>
parents:
25210
diff
changeset
|
972 valid))) |
25012 | 973 |
974 | |
975 (defvar face-attribute-name-alist | |
976 '((:family . "font family") | |
977 (:width . "character set width") | |
978 (:height . "height in 1/10 pt") | |
979 (:weight . "weight") | |
980 (:slant . "slant") | |
981 (:underline . "underline") | |
982 (:overline . "overline") | |
983 (:strike-through . "strike-through") | |
984 (:box . "box") | |
985 (:inverse-video . "inverse-video display") | |
986 (:foreground . "foreground color") | |
987 (:background . "background color") | |
31190 | 988 (:stipple . "background stipple") |
989 (:inherit . "inheritance")) | |
25012 | 990 "An alist of descriptive names for face attributes. |
991 Each element has the form (ATTRIBUTE-NAME . DESCRIPTION) where | |
992 ATTRIBUTE-NAME is a face attribute name (a keyword symbol), and | |
993 DESCRIPTION is a descriptive name for ATTRIBUTE-NAME.") | |
994 | |
995 | |
996 (defun face-descriptive-attribute-name (attribute) | |
997 "Return a descriptive name for ATTRIBUTE." | |
998 (cdr (assq attribute face-attribute-name-alist))) | |
999 | |
1000 | |
1001 (defun face-read-string (face default name &optional completion-alist) | |
1002 "Interactively read a face attribute string value. | |
31190 | 1003 FACE is the face whose attribute is read. If non-nil, DEFAULT is the |
1004 default string to return if no new value is entered. NAME is a | |
1005 descriptive name of the attribute for prompting. COMPLETION-ALIST is an | |
1006 alist of valid values, if non-nil. | |
25012 | 1007 |
31190 | 1008 Entering nothing accepts the default string DEFAULT. |
25012 | 1009 Value is the new attribute value." |
31190 | 1010 ;; Capitalize NAME (we don't use `capitalize' because that capitalizes |
1011 ;; each word in a string separately). | |
1012 (setq name (concat (upcase (substring name 0 1)) (substring name 1))) | |
25012 | 1013 (let* ((completion-ignore-case t) |
1014 (value (completing-read | |
1015 (if default | |
31190 | 1016 (format "%s for face `%s' (default %s): " |
1017 name face default) | |
1018 (format "%s for face `%s': " name face)) | |
25012 | 1019 completion-alist))) |
25245
ef080d2576f9
(face-valid-attribute-values): Return an alist for
Gerd Moellmann <gerd@gnu.org>
parents:
25210
diff
changeset
|
1020 (if (equal value "") default value))) |
25012 | 1021 |
1022 | |
1023 (defun face-read-integer (face default name) | |
1024 "Interactively read an integer face attribute value. | |
1025 FACE is the face whose attribute is read. DEFAULT is the default | |
1026 value to return if no new value is entered. NAME is a descriptive | |
1027 name of the attribute for prompting. Value is the new attribute value." | |
25245
ef080d2576f9
(face-valid-attribute-values): Return an alist for
Gerd Moellmann <gerd@gnu.org>
parents:
25210
diff
changeset
|
1028 (let ((new-value |
ef080d2576f9
(face-valid-attribute-values): Return an alist for
Gerd Moellmann <gerd@gnu.org>
parents:
25210
diff
changeset
|
1029 (face-read-string face |
31190 | 1030 (format "%s" default) |
25245
ef080d2576f9
(face-valid-attribute-values): Return an alist for
Gerd Moellmann <gerd@gnu.org>
parents:
25210
diff
changeset
|
1031 name |
ef080d2576f9
(face-valid-attribute-values): Return an alist for
Gerd Moellmann <gerd@gnu.org>
parents:
25210
diff
changeset
|
1032 (list (cons "unspecified" 'unspecified))))) |
31190 | 1033 (cond ((equal new-value "unspecified") |
1034 'unspecified) | |
1035 ((member new-value '("unspecified-fg" "unspecified-bg")) | |
1036 new-value) | |
1037 (t | |
62402
a7e02ef1e3d6
Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents:
62386
diff
changeset
|
1038 (string-to-number new-value))))) |
25012 | 1039 |
1040 | |
1041 (defun read-face-attribute (face attribute &optional frame) | |
1042 "Interactively read a new value for FACE's ATTRIBUTE. | |
1043 Optional argument FRAME nil or unspecified means read an attribute value | |
1044 of a global face. Value is the new attribute value." | |
1045 (let* ((old-value (face-attribute face attribute frame)) | |
1046 (attribute-name (face-descriptive-attribute-name attribute)) | |
1047 (valid (face-valid-attribute-values attribute frame)) | |
1048 new-value) | |
1049 ;; Represent complex attribute values as strings by printing them | |
1050 ;; out. Stipple can be a vector; (WIDTH HEIGHT DATA). Box can be | |
1051 ;; a list `(:width WIDTH :color COLOR)' or `(:width WIDTH :shadow | |
1052 ;; SHADOW)'. | |
1053 (when (and (or (eq attribute :stipple) | |
1054 (eq attribute :box)) | |
1055 (or (consp old-value) | |
1056 (vectorp old-value))) | |
1057 (setq old-value (prin1-to-string old-value))) | |
1058 (cond ((listp valid) | |
31190 | 1059 (let ((default |
1060 (or (car (rassoc old-value valid)) | |
1061 (format "%s" old-value)))) | |
1062 (setq new-value | |
1063 (face-read-string face default attribute-name valid)) | |
1064 (if (equal new-value default) | |
1065 ;; Nothing changed, so don't bother with all the stuff | |
1066 ;; below. In particular, this avoids a non-tty color | |
1067 ;; from being canonicalized for a tty when the user | |
1068 ;; just uses the default. | |
1069 (setq new-value old-value) | |
1070 ;; Terminal frames can support colors that don't appear | |
1071 ;; explicitly in VALID, using color approximation code | |
1072 ;; in tty-colors.el. | |
34585
1e66e14d9695
(read-face-attribute): If there's no entry for the user's input in
Miles Bader <miles@gnu.org>
parents:
34246
diff
changeset
|
1073 (when (and (memq attribute '(:foreground :background)) |
1e66e14d9695
(read-face-attribute): If there's no entry for the user's input in
Miles Bader <miles@gnu.org>
parents:
34246
diff
changeset
|
1074 (not (memq window-system '(x w32 mac))) |
1e66e14d9695
(read-face-attribute): If there's no entry for the user's input in
Miles Bader <miles@gnu.org>
parents:
34246
diff
changeset
|
1075 (not (member new-value |
1e66e14d9695
(read-face-attribute): If there's no entry for the user's input in
Miles Bader <miles@gnu.org>
parents:
34246
diff
changeset
|
1076 '("unspecified" |
1e66e14d9695
(read-face-attribute): If there's no entry for the user's input in
Miles Bader <miles@gnu.org>
parents:
34246
diff
changeset
|
1077 "unspecified-fg" "unspecified-bg")))) |
34587 | 1078 (setq new-value (car (tty-color-desc new-value frame)))) |
34585
1e66e14d9695
(read-face-attribute): If there's no entry for the user's input in
Miles Bader <miles@gnu.org>
parents:
34246
diff
changeset
|
1079 (when (assoc new-value valid) |
1e66e14d9695
(read-face-attribute): If there's no entry for the user's input in
Miles Bader <miles@gnu.org>
parents:
34246
diff
changeset
|
1080 (setq new-value (cdr (assoc new-value valid))))))) |
25012 | 1081 ((eq valid 'integerp) |
1082 (setq new-value (face-read-integer face old-value attribute-name))) | |
1083 (t (error "Internal error"))) | |
1084 ;; Convert stipple and box value text we read back to a list or | |
1085 ;; vector if it looks like one. This makes the assumption that a | |
1086 ;; pixmap file name won't start with an open-paren. | |
1087 (when (and (or (eq attribute :stipple) | |
1088 (eq attribute :box)) | |
1089 (stringp new-value) | |
1090 (string-match "^[[(]" new-value)) | |
1091 (setq new-value (read new-value))) | |
1092 new-value)) | |
1093 | |
1094 | |
1095 (defun read-face-font (face &optional frame) | |
1096 "Read the name of a font for FACE on FRAME. | |
64539
c94d5f576885
(describe-face): "?\ " -> "?\s".
Juanma Barranquero <lekktu@gmail.com>
parents:
64497
diff
changeset
|
1097 If optional argument FRAME is nil or omitted, use the selected frame." |
25012 | 1098 (let ((completion-ignore-case t)) |
31197
39d437913f44
(read-face-font, read-face-and-attribute): Tweak prompts.
Miles Bader <miles@gnu.org>
parents:
31193
diff
changeset
|
1099 (completing-read (format "Set font attributes of face `%s' from font: " face) |
54574
76b831799f4d
(read-face-font): Don't cons up unnecessarily.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54161
diff
changeset
|
1100 (x-list-fonts "*" nil frame)))) |
25012 | 1101 |
1102 | |
1103 (defun read-all-face-attributes (face &optional frame) | |
1104 "Interactively read all attributes for FACE. | |
64539
c94d5f576885
(describe-face): "?\ " -> "?\s".
Juanma Barranquero <lekktu@gmail.com>
parents:
64497
diff
changeset
|
1105 If optional argument FRAME is nil or omitted, use the selected frame. |
25012 | 1106 Value is a property list of attribute names and new values." |
1107 (let (result) | |
1108 (dolist (attribute face-attribute-name-alist result) | |
1109 (setq result (cons (car attribute) | |
1110 (cons (read-face-attribute face (car attribute) frame) | |
1111 result)))))) | |
1112 | |
37467
342409bb6b91
(modify-face): Add compatibility for non-interactive use.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37294
diff
changeset
|
1113 (defun modify-face (&optional face foreground background stipple |
342409bb6b91
(modify-face): Add compatibility for non-interactive use.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37294
diff
changeset
|
1114 bold-p italic-p underline-p inverse-p frame) |
25012 | 1115 "Modify attributes of faces interactively. |
1116 If optional argument FRAME is nil or omitted, modify the face used | |
37467
342409bb6b91
(modify-face): Add compatibility for non-interactive use.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37294
diff
changeset
|
1117 for newly created frame, i.e. the global face. |
342409bb6b91
(modify-face): Add compatibility for non-interactive use.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37294
diff
changeset
|
1118 For non-interactive use, `set-face-attribute' is preferred. |
64539
c94d5f576885
(describe-face): "?\ " -> "?\s".
Juanma Barranquero <lekktu@gmail.com>
parents:
64497
diff
changeset
|
1119 When called from Lisp, if FACE is nil, all arguments but FRAME are ignored |
37467
342409bb6b91
(modify-face): Add compatibility for non-interactive use.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37294
diff
changeset
|
1120 and the face and its settings are obtained by querying the user." |
25012 | 1121 (interactive) |
37467
342409bb6b91
(modify-face): Add compatibility for non-interactive use.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37294
diff
changeset
|
1122 (if face |
342409bb6b91
(modify-face): Add compatibility for non-interactive use.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37294
diff
changeset
|
1123 (set-face-attribute face frame |
342409bb6b91
(modify-face): Add compatibility for non-interactive use.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37294
diff
changeset
|
1124 :foreground (or foreground 'unspecified) |
342409bb6b91
(modify-face): Add compatibility for non-interactive use.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37294
diff
changeset
|
1125 :background (or background 'unspecified) |
342409bb6b91
(modify-face): Add compatibility for non-interactive use.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37294
diff
changeset
|
1126 :stipple stipple |
342409bb6b91
(modify-face): Add compatibility for non-interactive use.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37294
diff
changeset
|
1127 :bold bold-p |
342409bb6b91
(modify-face): Add compatibility for non-interactive use.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37294
diff
changeset
|
1128 :italic italic-p |
342409bb6b91
(modify-face): Add compatibility for non-interactive use.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37294
diff
changeset
|
1129 :underline underline-p |
342409bb6b91
(modify-face): Add compatibility for non-interactive use.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37294
diff
changeset
|
1130 :inverse-video inverse-p) |
342409bb6b91
(modify-face): Add compatibility for non-interactive use.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37294
diff
changeset
|
1131 (setq face (read-face-name "Modify face")) |
25012 | 1132 (apply #'set-face-attribute face frame |
1133 (read-all-face-attributes face frame)))) | |
1134 | |
1135 (defun read-face-and-attribute (attribute &optional frame) | |
1136 "Read face name and face attribute value. | |
1137 ATTRIBUTE is the attribute whose new value is read. | |
1138 FRAME nil or unspecified means read attribute value of global face. | |
1139 Value is a list (FACE NEW-VALUE) where FACE is the face read | |
37467
342409bb6b91
(modify-face): Add compatibility for non-interactive use.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37294
diff
changeset
|
1140 \(a symbol), and NEW-VALUE is value read." |
25012 | 1141 (cond ((eq attribute :font) |
31197
39d437913f44
(read-face-font, read-face-and-attribute): Tweak prompts.
Miles Bader <miles@gnu.org>
parents:
31193
diff
changeset
|
1142 (let* ((prompt "Set font-related attributes of face") |
25012 | 1143 (face (read-face-name prompt)) |
1144 (font (read-face-font face frame))) | |
1145 (list face font))) | |
1146 (t | |
1147 (let* ((attribute-name (face-descriptive-attribute-name attribute)) | |
31190 | 1148 (prompt (format "Set %s of face" attribute-name)) |
25012 | 1149 (face (read-face-name prompt)) |
1150 (new-value (read-face-attribute face attribute frame))) | |
1151 (list face new-value))))) | |
1152 | |
1153 | |
1154 | |
1155 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
1156 ;;; Listing faces. | |
1157 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
1158 | |
1159 (defvar list-faces-sample-text | |
1160 "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ" | |
1161 "*Text string to display as the sample text for `list-faces-display'.") | |
1162 | |
1163 | |
1164 ;; The name list-faces would be more consistent, but let's avoid a | |
1165 ;; conflict with Lucid, which uses that name differently. | |
1166 | |
48914
bb52f186fa1e
(help-xref-stack): Add defvar to avoid warning.
Richard M. Stallman <rms@gnu.org>
parents:
48713
diff
changeset
|
1167 (defvar help-xref-stack) |
59872
d7da3e10bfef
(list-faces-display): Add optional argument.
Richard M. Stallman <rms@gnu.org>
parents:
59281
diff
changeset
|
1168 (defun list-faces-display (&optional regexp) |
25012 | 1169 "List all faces, using the same sample text in each. |
1170 The sample text is a string that comes from the variable | |
59872
d7da3e10bfef
(list-faces-display): Add optional argument.
Richard M. Stallman <rms@gnu.org>
parents:
59281
diff
changeset
|
1171 `list-faces-sample-text'. |
d7da3e10bfef
(list-faces-display): Add optional argument.
Richard M. Stallman <rms@gnu.org>
parents:
59281
diff
changeset
|
1172 |
d7da3e10bfef
(list-faces-display): Add optional argument.
Richard M. Stallman <rms@gnu.org>
parents:
59281
diff
changeset
|
1173 If REGEXP is non-nil, list only those faces with names matching |
d7da3e10bfef
(list-faces-display): Add optional argument.
Richard M. Stallman <rms@gnu.org>
parents:
59281
diff
changeset
|
1174 this regular expression. When called interactively with a prefix |
d7da3e10bfef
(list-faces-display): Add optional argument.
Richard M. Stallman <rms@gnu.org>
parents:
59281
diff
changeset
|
1175 arg, prompt for a regular expression." |
d7da3e10bfef
(list-faces-display): Add optional argument.
Richard M. Stallman <rms@gnu.org>
parents:
59281
diff
changeset
|
1176 (interactive (list (and current-prefix-arg |
d7da3e10bfef
(list-faces-display): Add optional argument.
Richard M. Stallman <rms@gnu.org>
parents:
59281
diff
changeset
|
1177 (read-string "List faces matching regexp: ")))) |
62947
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
1178 (let ((all-faces (zerop (length regexp))) |
25012 | 1179 (frame (selected-frame)) |
62947
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
1180 (max-length 0) |
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
1181 faces line-format |
27716
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
1182 disp-frame window face-name) |
62947
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
1183 ;; We filter and take the max length in one pass |
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
1184 (setq faces |
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
1185 (delq nil |
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
1186 (mapcar (lambda (f) |
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
1187 (let ((s (symbol-name f))) |
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
1188 (when (or all-faces (string-match regexp s)) |
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
1189 (setq max-length (max (length s) max-length)) |
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
1190 f))) |
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
1191 (sort (face-list) #'string-lessp)))) |
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
1192 (unless faces |
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
1193 (error "No faces matching \"%s\"" regexp)) |
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
1194 (setq max-length (1+ max-length) |
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
1195 line-format (format "%%-%ds" max-length)) |
25012 | 1196 (with-output-to-temp-buffer "*Faces*" |
1197 (save-excursion | |
1198 (set-buffer standard-output) | |
1199 (setq truncate-lines t) | |
27716
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
1200 (insert |
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
1201 (substitute-command-keys |
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
1202 (concat |
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
1203 "Use " |
27736
b4d0a1247b35
(list-faces-display): Use display-mouse-p, not window-system.
Eli Zaretskii <eliz@gnu.org>
parents:
27716
diff
changeset
|
1204 (if (display-mouse-p) "\\[help-follow-mouse] or ") |
27831
05cce359cbf0
(list-faces-display): Fix header typo.
Dave Love <fx@gnu.org>
parents:
27736
diff
changeset
|
1205 "\\[help-follow] on a face name to customize it\n" |
43550
fc7733c201af
(list-faces-display): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
43392
diff
changeset
|
1206 "or on its sample text for a description of the face.\n\n"))) |
27716
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
1207 (setq help-xref-stack nil) |
59872
d7da3e10bfef
(list-faces-display): Add optional argument.
Richard M. Stallman <rms@gnu.org>
parents:
59281
diff
changeset
|
1208 (dolist (face faces) |
27716
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
1209 (setq face-name (symbol-name face)) |
62947
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
1210 (insert (format line-format face-name)) |
27716
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
1211 ;; Hyperlink to a customization buffer for the face. Using |
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
1212 ;; the help xref mechanism may not be the best way. |
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
1213 (save-excursion |
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
1214 (save-match-data |
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
1215 (search-backward face-name) |
62534
bf6a0cd0e835
(list-faces-display): Make back button respect optional regexp arg.
Nick Roberts <nickrob@snap.net.nz>
parents:
62498
diff
changeset
|
1216 (setq help-xref-stack-item `(list-faces-display ,regexp)) |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1217 (help-xref-button 0 'help-customize-face face))) |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1218 (let ((beg (point)) |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1219 (line-beg (line-beginning-position))) |
25012 | 1220 (insert list-faces-sample-text) |
27716
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
1221 ;; Hyperlink to a help buffer for the face. |
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
1222 (save-excursion |
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
1223 (save-match-data |
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
1224 (search-backward list-faces-sample-text) |
39799
99f30ac48ec0
(list-faces-display, describe-face): Fix args to `help-xref-button'.
Miles Bader <miles@gnu.org>
parents:
39549
diff
changeset
|
1225 (help-xref-button 0 'help-face face))) |
25012 | 1226 (insert "\n") |
1227 (put-text-property beg (1- (point)) 'face face) | |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1228 ;; Make all face commands default to the proper face |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1229 ;; anywhere in the line. |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1230 (put-text-property line-beg (1- (point)) 'read-face-name face) |
25012 | 1231 ;; If the sample text has multiple lines, line up all of them. |
1232 (goto-char beg) | |
1233 (forward-line 1) | |
1234 (while (not (eobp)) | |
62947
2a5dbdf6d22a
(list-faces-display): Improve the formatting by computing the maximum length
Juanma Barranquero <lekktu@gmail.com>
parents:
62922
diff
changeset
|
1235 (insert-char ?\s max-length) |
25012 | 1236 (forward-line 1)))) |
1237 (goto-char (point-min))) | |
1238 (print-help-return-message)) | |
1239 ;; If the *Faces* buffer appears in a different frame, | |
1240 ;; copy all the face definitions from FRAME, | |
1241 ;; so that the display will reflect the frame that was selected. | |
1242 (setq window (get-buffer-window (get-buffer "*Faces*") t)) | |
1243 (setq disp-frame (if window (window-frame window) | |
1244 (car (frame-list)))) | |
1245 (or (eq frame disp-frame) | |
1246 (let ((faces (face-list))) | |
1247 (while faces | |
1248 (copy-face (car faces) (car faces) frame disp-frame) | |
1249 (setq faces (cdr faces))))))) | |
1250 | |
59872
d7da3e10bfef
(list-faces-display): Add optional argument.
Richard M. Stallman <rms@gnu.org>
parents:
59281
diff
changeset
|
1251 |
25012 | 1252 (defun describe-face (face &optional frame) |
1253 "Display the properties of face FACE on FRAME. | |
45314
d752ae89321a
(describe-face): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents:
45255
diff
changeset
|
1254 Interactively, FACE defaults to the faces of the character after point |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1255 and FRAME defaults to the selected frame. |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1256 |
25012 | 1257 If the optional argument FRAME is given, report on face FACE in that frame. |
1258 If FRAME is t, report on the defaults for face FACE (for new frames). | |
1259 If FRAME is omitted or nil, use the selected frame." | |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1260 (interactive (list (read-face-name "Describe face" "= `default' face" t))) |
25012 | 1261 (let* ((attrs '((:family . "Family") |
1262 (:width . "Width") | |
1263 (:height . "Height") | |
1264 (:weight . "Weight") | |
1265 (:slant . "Slant") | |
1266 (:foreground . "Foreground") | |
1267 (:background . "Background") | |
1268 (:underline . "Underline") | |
1269 (:overline . "Overline") | |
1270 (:strike-through . "Strike-through") | |
1271 (:box . "Box") | |
1272 (:inverse-video . "Inverse") | |
28214
73c16c6e401e
(read-face-font): Fix TABLE arg to completing-read.
Kenichi Handa <handa@m17n.org>
parents:
27928
diff
changeset
|
1273 (:stipple . "Stipple") |
31179
354c781f2864
(describe-face): Add support for :inherit attribute.
Miles Bader <miles@gnu.org>
parents:
30971
diff
changeset
|
1274 (:font . "Font or fontset") |
354c781f2864
(describe-face): Add support for :inherit attribute.
Miles Bader <miles@gnu.org>
parents:
30971
diff
changeset
|
1275 (:inherit . "Inherit"))) |
25012 | 1276 (max-width (apply #'max (mapcar #'(lambda (x) (length (cdr x))) |
1277 attrs)))) | |
39830
aed9c3afb7ed
(describe-face): Call help-setup-xref earlier.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39799
diff
changeset
|
1278 (help-setup-xref (list #'describe-face face) (interactive-p)) |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1279 (unless face |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1280 (setq face 'default)) |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1281 (if (not (listp face)) |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1282 (setq face (list face))) |
39799
99f30ac48ec0
(list-faces-display, describe-face): Fix args to `help-xref-button'.
Miles Bader <miles@gnu.org>
parents:
39549
diff
changeset
|
1283 (with-output-to-temp-buffer (help-buffer) |
25012 | 1284 (save-excursion |
1285 (set-buffer standard-output) | |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1286 (dolist (f face) |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1287 (insert "Face: " (symbol-name f)) |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1288 (if (not (facep f)) |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1289 (insert " undefined face.\n") |
62386
3eeae124dcab
(describe-face): Output a definition link button.
Richard M. Stallman <rms@gnu.org>
parents:
61481
diff
changeset
|
1290 (let ((customize-label "customize this face") |
3eeae124dcab
(describe-face): Output a definition link button.
Richard M. Stallman <rms@gnu.org>
parents:
61481
diff
changeset
|
1291 file-name) |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1292 (princ (concat " (" customize-label ")\n")) |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1293 (insert "Documentation: " |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1294 (or (face-documentation f) |
46041
53b3233b2574
(describe-face): Capitalize "not documented" message.
Juanma Barranquero <lekktu@gmail.com>
parents:
45722
diff
changeset
|
1295 "Not documented as a face.") |
62386
3eeae124dcab
(describe-face): Output a definition link button.
Richard M. Stallman <rms@gnu.org>
parents:
61481
diff
changeset
|
1296 "\n") |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1297 (with-current-buffer standard-output |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1298 (save-excursion |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1299 (re-search-backward |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1300 (concat "\\(" customize-label "\\)") nil t) |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1301 (help-xref-button 1 'help-customize-face f))) |
62386
3eeae124dcab
(describe-face): Output a definition link button.
Richard M. Stallman <rms@gnu.org>
parents:
61481
diff
changeset
|
1302 ;; The next 4 sexps are copied from describe-function-1 |
3eeae124dcab
(describe-face): Output a definition link button.
Richard M. Stallman <rms@gnu.org>
parents:
61481
diff
changeset
|
1303 ;; and simplified. |
3eeae124dcab
(describe-face): Output a definition link button.
Richard M. Stallman <rms@gnu.org>
parents:
61481
diff
changeset
|
1304 (setq file-name (symbol-file f 'defface)) |
66351
fc5672d9fc45
(describe-face): Use describe-simplify-lib-file-name.
Richard M. Stallman <rms@gnu.org>
parents:
65730
diff
changeset
|
1305 (setq file-name (describe-simplify-lib-file-name file-name)) |
62386
3eeae124dcab
(describe-face): Output a definition link button.
Richard M. Stallman <rms@gnu.org>
parents:
61481
diff
changeset
|
1306 (when file-name |
3eeae124dcab
(describe-face): Output a definition link button.
Richard M. Stallman <rms@gnu.org>
parents:
61481
diff
changeset
|
1307 (princ "Defined in `") |
3eeae124dcab
(describe-face): Output a definition link button.
Richard M. Stallman <rms@gnu.org>
parents:
61481
diff
changeset
|
1308 (princ file-name) |
3eeae124dcab
(describe-face): Output a definition link button.
Richard M. Stallman <rms@gnu.org>
parents:
61481
diff
changeset
|
1309 (princ "'") |
3eeae124dcab
(describe-face): Output a definition link button.
Richard M. Stallman <rms@gnu.org>
parents:
61481
diff
changeset
|
1310 ;; Make a hyperlink to the library. |
3eeae124dcab
(describe-face): Output a definition link button.
Richard M. Stallman <rms@gnu.org>
parents:
61481
diff
changeset
|
1311 (save-excursion |
3eeae124dcab
(describe-face): Output a definition link button.
Richard M. Stallman <rms@gnu.org>
parents:
61481
diff
changeset
|
1312 (re-search-backward "`\\([^`']+\\)'" nil t) |
3eeae124dcab
(describe-face): Output a definition link button.
Richard M. Stallman <rms@gnu.org>
parents:
61481
diff
changeset
|
1313 (help-xref-button 1 'help-face-def f file-name)) |
3eeae124dcab
(describe-face): Output a definition link button.
Richard M. Stallman <rms@gnu.org>
parents:
61481
diff
changeset
|
1314 (princ ".") |
3eeae124dcab
(describe-face): Output a definition link button.
Richard M. Stallman <rms@gnu.org>
parents:
61481
diff
changeset
|
1315 (terpri) |
3eeae124dcab
(describe-face): Output a definition link button.
Richard M. Stallman <rms@gnu.org>
parents:
61481
diff
changeset
|
1316 (terpri)) |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1317 (dolist (a attrs) |
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1318 (let ((attr (face-attribute f (car a) frame))) |
64539
c94d5f576885
(describe-face): "?\ " -> "?\s".
Juanma Barranquero <lekktu@gmail.com>
parents:
64497
diff
changeset
|
1319 (insert (make-string (- max-width (length (cdr a))) ?\s) |
65068
6606e83775f0
(set-face-underline): Delete this duplicate function
Juri Linkov <juri@jurta.org>
parents:
64762
diff
changeset
|
1320 (cdr a) ": " (format "%s" attr)) |
6606e83775f0
(set-face-underline): Delete this duplicate function
Juri Linkov <juri@jurta.org>
parents:
64762
diff
changeset
|
1321 (if (and (eq (car a) :inherit) |
6606e83775f0
(set-face-underline): Delete this duplicate function
Juri Linkov <juri@jurta.org>
parents:
64762
diff
changeset
|
1322 (not (eq attr 'unspecified))) |
6606e83775f0
(set-face-underline): Delete this duplicate function
Juri Linkov <juri@jurta.org>
parents:
64762
diff
changeset
|
1323 ;; Make a hyperlink to the parent face. |
6606e83775f0
(set-face-underline): Delete this duplicate function
Juri Linkov <juri@jurta.org>
parents:
64762
diff
changeset
|
1324 (save-excursion |
6606e83775f0
(set-face-underline): Delete this duplicate function
Juri Linkov <juri@jurta.org>
parents:
64762
diff
changeset
|
1325 (re-search-backward ": \\([^:]+\\)" nil t) |
6606e83775f0
(set-face-underline): Delete this duplicate function
Juri Linkov <juri@jurta.org>
parents:
64762
diff
changeset
|
1326 (help-xref-button 1 'help-face attr))) |
6606e83775f0
(set-face-underline): Delete this duplicate function
Juri Linkov <juri@jurta.org>
parents:
64762
diff
changeset
|
1327 (insert "\n"))))) |
44886
fe167023fdf0
(read-face-name): New defaulting features.
Richard M. Stallman <rms@gnu.org>
parents:
44590
diff
changeset
|
1328 (terpri))) |
39830
aed9c3afb7ed
(describe-face): Call help-setup-xref earlier.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39799
diff
changeset
|
1329 (print-help-return-message)))) |
39799
99f30ac48ec0
(list-faces-display, describe-face): Fix args to `help-xref-button'.
Miles Bader <miles@gnu.org>
parents:
39549
diff
changeset
|
1330 |
2456 | 1331 |
25012 | 1332 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
1333 ;;; Face specifications (defface). | |
1334 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
1335 | |
1336 ;; Parameter FRAME Is kept for call compatibility to with previous | |
1337 ;; face implementation. | |
1338 | |
1339 (defun face-attr-construct (face &optional frame) | |
64539
c94d5f576885
(describe-face): "?\ " -> "?\s".
Juanma Barranquero <lekktu@gmail.com>
parents:
64497
diff
changeset
|
1340 "Return a `defface'-style attribute list for FACE on FRAME. |
25012 | 1341 Value is a property list of pairs ATTRIBUTE VALUE for all specified |
1342 face attributes of FACE where ATTRIBUTE is the attribute name and | |
1343 VALUE is the specified value of that attribute." | |
1344 (let (result) | |
1345 (dolist (entry face-attribute-name-alist result) | |
1346 (let* ((attribute (car entry)) | |
1347 (value (face-attribute face attribute))) | |
1348 (unless (eq value 'unspecified) | |
1349 (setq result (nconc (list attribute value) result))))))) | |
37943 | 1350 |
25012 | 1351 |
1352 (defun face-spec-set-match-display (display frame) | |
1353 "Non-nil if DISPLAY matches FRAME. | |
1354 DISPLAY is part of a spec such as can be used in `defface'. | |
1355 If FRAME is nil, the current FRAME is used." | |
1356 (let* ((conjuncts display) | |
1357 conjunct req options | |
1358 ;; t means we have succeeded against all the conjuncts in | |
1359 ;; DISPLAY that have been tested so far. | |
1360 (match t)) | |
1361 (if (eq conjuncts t) | |
1362 (setq conjuncts nil)) | |
1363 (while (and conjuncts match) | |
1364 (setq conjunct (car conjuncts) | |
1365 conjuncts (cdr conjuncts) | |
1366 req (car conjunct) | |
1367 options (cdr conjunct) | |
1368 match (cond ((eq req 'type) | |
1369 (or (memq window-system options) | |
33447
45961172564e
(face-spec-set-match-display): Revert the change from
Eli Zaretskii <eliz@gnu.org>
parents:
33419
diff
changeset
|
1370 ;; FIXME: This should be revisited to use |
45961172564e
(face-spec-set-match-display): Revert the change from
Eli Zaretskii <eliz@gnu.org>
parents:
33419
diff
changeset
|
1371 ;; display-graphic-p, provided that the |
45961172564e
(face-spec-set-match-display): Revert the change from
Eli Zaretskii <eliz@gnu.org>
parents:
33419
diff
changeset
|
1372 ;; color selection depends on the number |
45961172564e
(face-spec-set-match-display): Revert the change from
Eli Zaretskii <eliz@gnu.org>
parents:
33419
diff
changeset
|
1373 ;; of supported colors, and all defface's |
45961172564e
(face-spec-set-match-display): Revert the change from
Eli Zaretskii <eliz@gnu.org>
parents:
33419
diff
changeset
|
1374 ;; are changed to look at number of colors |
45961172564e
(face-spec-set-match-display): Revert the change from
Eli Zaretskii <eliz@gnu.org>
parents:
33419
diff
changeset
|
1375 ;; instead of (type graphic) etc. |
45961172564e
(face-spec-set-match-display): Revert the change from
Eli Zaretskii <eliz@gnu.org>
parents:
33419
diff
changeset
|
1376 (and (null window-system) |
45961172564e
(face-spec-set-match-display): Revert the change from
Eli Zaretskii <eliz@gnu.org>
parents:
33419
diff
changeset
|
1377 (memq 'tty options)) |
25887
099a3776ff00
(face-spec-set-match-display): Recognize `type' of
Gerd Moellmann <gerd@gnu.org>
parents:
25814
diff
changeset
|
1378 (and (memq 'motif options) |
099a3776ff00
(face-spec-set-match-display): Recognize `type' of
Gerd Moellmann <gerd@gnu.org>
parents:
25814
diff
changeset
|
1379 (featurep 'motif)) |
55545
70c4138d3b8d
* custom.el (defface): Document that type can have value gtk.
Jan Djärv <jan.h.d@swipnet.se>
parents:
54574
diff
changeset
|
1380 (and (memq 'gtk options) |
70c4138d3b8d
* custom.el (defface): Document that type can have value gtk.
Jan Djärv <jan.h.d@swipnet.se>
parents:
54574
diff
changeset
|
1381 (featurep 'gtk)) |
25887
099a3776ff00
(face-spec-set-match-display): Recognize `type' of
Gerd Moellmann <gerd@gnu.org>
parents:
25814
diff
changeset
|
1382 (and (memq 'lucid options) |
099a3776ff00
(face-spec-set-match-display): Recognize `type' of
Gerd Moellmann <gerd@gnu.org>
parents:
25814
diff
changeset
|
1383 (featurep 'x-toolkit) |
55545
70c4138d3b8d
* custom.el (defface): Document that type can have value gtk.
Jan Djärv <jan.h.d@swipnet.se>
parents:
54574
diff
changeset
|
1384 (not (featurep 'motif)) |
70c4138d3b8d
* custom.el (defface): Document that type can have value gtk.
Jan Djärv <jan.h.d@swipnet.se>
parents:
54574
diff
changeset
|
1385 (not (featurep 'gtk))) |
25887
099a3776ff00
(face-spec-set-match-display): Recognize `type' of
Gerd Moellmann <gerd@gnu.org>
parents:
25814
diff
changeset
|
1386 (and (memq 'x-toolkit options) |
099a3776ff00
(face-spec-set-match-display): Recognize `type' of
Gerd Moellmann <gerd@gnu.org>
parents:
25814
diff
changeset
|
1387 (featurep 'x-toolkit)))) |
54151
9a5c3b661a40
(face-spec-set-match-display): Add a new attribute, `min-colors'.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1388 ((eq req 'min-colors) |
9a5c3b661a40
(face-spec-set-match-display): Add a new attribute, `min-colors'.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1389 (>= (display-color-cells frame) (car options))) |
25012 | 1390 ((eq req 'class) |
1391 (memq (frame-parameter frame 'display-type) options)) | |
1392 ((eq req 'background) | |
1393 (memq (frame-parameter frame 'background-mode) | |
1394 options)) | |
45722
c553d91619aa
(display-supports-face-attributes-p): Work correctly if DISPLAY is a frame.
Miles Bader <miles@gnu.org>
parents:
45717
diff
changeset
|
1395 ((eq req 'supports) |
c553d91619aa
(display-supports-face-attributes-p): Work correctly if DISPLAY is a frame.
Miles Bader <miles@gnu.org>
parents:
45717
diff
changeset
|
1396 (display-supports-face-attributes-p options frame)) |
28840 | 1397 (t (error "Unknown req `%S' with options `%S'" |
25012 | 1398 req options))))) |
1399 match)) | |
1400 | |
1401 | |
1402 (defun face-spec-choose (spec &optional frame) | |
32758
a0ca98ed466a
(face-user-default-spec, face-default-spec): New functions.
Miles Bader <miles@gnu.org>
parents:
32756
diff
changeset
|
1403 "Choose the proper attributes for FRAME, out of SPEC. |
a0ca98ed466a
(face-user-default-spec, face-default-spec): New functions.
Miles Bader <miles@gnu.org>
parents:
32756
diff
changeset
|
1404 If SPEC is nil, return nil." |
25012 | 1405 (unless frame |
1406 (setq frame (selected-frame))) | |
1407 (let ((tail spec) | |
58935
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1408 result defaults) |
25012 | 1409 (while tail |
32940
80681aca0859
(face-spec-choose): Change syntax so that the list of attribute-value
Miles Bader <miles@gnu.org>
parents:
32801
diff
changeset
|
1410 (let* ((entry (pop tail)) |
80681aca0859
(face-spec-choose): Change syntax so that the list of attribute-value
Miles Bader <miles@gnu.org>
parents:
32801
diff
changeset
|
1411 (display (car entry)) |
58935
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1412 (attrs (cdr entry)) |
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1413 thisval) |
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1414 ;; Get the attributes as actually specified by this alternative. |
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1415 (setq thisval |
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1416 (if (null (cdr attrs)) ;; was (listp (car attrs)) |
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1417 ;; Old-style entry, the attribute list is the |
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1418 ;; first element. |
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1419 (car attrs) |
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1420 attrs)) |
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1421 |
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1422 ;; If the condition is `default', that sets the default |
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1423 ;; for following conditions. |
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1424 (if (eq display 'default) |
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1425 (setq defaults thisval) |
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1426 ;; Otherwise, if it matches, use it. |
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1427 (when (face-spec-set-match-display display frame) |
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1428 (setq result thisval) |
43711
d15360503e4e
(face-spec-choose): Allow `t' to appear before the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43550
diff
changeset
|
1429 (setq tail nil))))) |
58935
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
1430 (if defaults (append result defaults) result))) |
25012 | 1431 |
1432 | |
1433 (defun face-spec-reset-face (face &optional frame) | |
1434 "Reset all attributes of FACE on FRAME to unspecified." | |
31401
0b8165a82e34
(set-face-attribute, face-spec-reset-face)
Gerd Moellmann <gerd@gnu.org>
parents:
31197
diff
changeset
|
1435 (let ((attrs face-attribute-name-alist)) |
25012 | 1436 (while attrs |
1437 (let ((attr-and-name (car attrs))) | |
31401
0b8165a82e34
(set-face-attribute, face-spec-reset-face)
Gerd Moellmann <gerd@gnu.org>
parents:
31197
diff
changeset
|
1438 (set-face-attribute face frame (car attr-and-name) 'unspecified)) |
0b8165a82e34
(set-face-attribute, face-spec-reset-face)
Gerd Moellmann <gerd@gnu.org>
parents:
31197
diff
changeset
|
1439 (setq attrs (cdr attrs))))) |
25012 | 1440 |
1441 | |
1442 (defun face-spec-set (face spec &optional frame) | |
1443 "Set FACE's attributes according to the first matching entry in SPEC. | |
1444 FRAME is the frame whose frame-local face is set. FRAME nil means | |
32758
a0ca98ed466a
(face-user-default-spec, face-default-spec): New functions.
Miles Bader <miles@gnu.org>
parents:
32756
diff
changeset
|
1445 do it on all frames. See `defface' for information about SPEC. |
a0ca98ed466a
(face-user-default-spec, face-default-spec): New functions.
Miles Bader <miles@gnu.org>
parents:
32756
diff
changeset
|
1446 If SPEC is nil, do nothing." |
31401
0b8165a82e34
(set-face-attribute, face-spec-reset-face)
Gerd Moellmann <gerd@gnu.org>
parents:
31197
diff
changeset
|
1447 (let ((attrs (face-spec-choose spec frame))) |
31500
33b9a5b2a3bc
(face-spec-set): Only face-spec-reset-face when
Gerd Moellmann <gerd@gnu.org>
parents:
31466
diff
changeset
|
1448 (when attrs |
33b9a5b2a3bc
(face-spec-set): Only face-spec-reset-face when
Gerd Moellmann <gerd@gnu.org>
parents:
31466
diff
changeset
|
1449 (face-spec-reset-face face frame)) |
25012 | 1450 (while attrs |
1451 (let ((attribute (car attrs)) | |
1452 (value (car (cdr attrs)))) | |
1453 ;; Support some old-style attribute names and values. | |
1454 (case attribute | |
1455 (:bold (setq attribute :weight value (if value 'bold 'normal))) | |
30010
281fa98f5c87
(face-spec-set): Ignore invalid attributes like 20.x.
Gerd Moellmann <gerd@gnu.org>
parents:
29976
diff
changeset
|
1456 (:italic (setq attribute :slant value (if value 'italic 'normal))) |
34682
4130c0ad0a5e
(face-spec-set): Interpret a nil in specs for
Gerd Moellmann <gerd@gnu.org>
parents:
34587
diff
changeset
|
1457 ((:foreground :background) |
37943 | 1458 ;; Compatibility with 20.x. Some bogus face specs seem to |
34682
4130c0ad0a5e
(face-spec-set): Interpret a nil in specs for
Gerd Moellmann <gerd@gnu.org>
parents:
34587
diff
changeset
|
1459 ;; exist containing things like `:foreground nil'. |
4130c0ad0a5e
(face-spec-set): Interpret a nil in specs for
Gerd Moellmann <gerd@gnu.org>
parents:
34587
diff
changeset
|
1460 (if (null value) (setq value 'unspecified))) |
30010
281fa98f5c87
(face-spec-set): Ignore invalid attributes like 20.x.
Gerd Moellmann <gerd@gnu.org>
parents:
29976
diff
changeset
|
1461 (t (unless (assq attribute face-x-resources) |
281fa98f5c87
(face-spec-set): Ignore invalid attributes like 20.x.
Gerd Moellmann <gerd@gnu.org>
parents:
29976
diff
changeset
|
1462 (setq attribute nil)))) |
281fa98f5c87
(face-spec-set): Ignore invalid attributes like 20.x.
Gerd Moellmann <gerd@gnu.org>
parents:
29976
diff
changeset
|
1463 (when attribute |
31401
0b8165a82e34
(set-face-attribute, face-spec-reset-face)
Gerd Moellmann <gerd@gnu.org>
parents:
31197
diff
changeset
|
1464 (set-face-attribute face frame attribute value))) |
51280
c2efaecb5d8f
(set-face-attribute): Set face-modified prop to t
Richard M. Stallman <rms@gnu.org>
parents:
51248
diff
changeset
|
1465 (setq attrs (cdr (cdr attrs))))) |
c2efaecb5d8f
(set-face-attribute): Set face-modified prop to t
Richard M. Stallman <rms@gnu.org>
parents:
51248
diff
changeset
|
1466 ;; When we reset the face based on its spec, then it is unmodified |
c2efaecb5d8f
(set-face-attribute): Set face-modified prop to t
Richard M. Stallman <rms@gnu.org>
parents:
51248
diff
changeset
|
1467 ;; as far as Custom is concerned. |
c2efaecb5d8f
(set-face-attribute): Set face-modified prop to t
Richard M. Stallman <rms@gnu.org>
parents:
51248
diff
changeset
|
1468 (if (null frame) |
63660
47c90f7c23df
(face-documentation, set-face-attribute)
Glenn Morris <rgm@gnu.org>
parents:
63650
diff
changeset
|
1469 (put (or (get face 'face-alias) face) 'face-modified nil))) |
25012 | 1470 |
1471 | |
1472 (defun face-attr-match-p (face attrs &optional frame) | |
30971 | 1473 "Return t if attributes of FACE match values in plist ATTRS. |
25012 | 1474 Optional parameter FRAME is the frame whose definition of FACE |
1475 is used. If nil or omitted, use the selected frame." | |
1476 (unless frame | |
1477 (setq frame (selected-frame))) | |
1478 (let ((list face-attribute-name-alist) | |
1479 (match t)) | |
1480 (while (and match (not (null list))) | |
1481 (let* ((attr (car (car list))) | |
30971 | 1482 (specified-value |
1483 (if (plist-member attrs attr) | |
1484 (plist-get attrs attr) | |
1485 'unspecified)) | |
25012 | 1486 (value-now (face-attribute face attr frame))) |
30971 | 1487 (setq match (equal specified-value value-now)) |
25012 | 1488 (setq list (cdr list)))) |
1489 match)) | |
1490 | |
1491 (defun face-spec-match-p (face spec &optional frame) | |
1492 "Return t if FACE, on FRAME, matches what SPEC says it should look like." | |
1493 (face-attr-match-p face (face-spec-choose spec frame) frame)) | |
1494 | |
32795
975cc2648ee4
(face-default-spec, face-user-default-spec): Make defsubsts.
Miles Bader <miles@gnu.org>
parents:
32758
diff
changeset
|
1495 (defsubst face-default-spec (face) |
975cc2648ee4
(face-default-spec, face-user-default-spec): Make defsubsts.
Miles Bader <miles@gnu.org>
parents:
32758
diff
changeset
|
1496 "Return the default face-spec for FACE, ignoring any user customization. |
975cc2648ee4
(face-default-spec, face-user-default-spec): Make defsubsts.
Miles Bader <miles@gnu.org>
parents:
32758
diff
changeset
|
1497 If there is no default for FACE, return nil." |
975cc2648ee4
(face-default-spec, face-user-default-spec): Make defsubsts.
Miles Bader <miles@gnu.org>
parents:
32758
diff
changeset
|
1498 (get face 'face-defface-spec)) |
975cc2648ee4
(face-default-spec, face-user-default-spec): Make defsubsts.
Miles Bader <miles@gnu.org>
parents:
32758
diff
changeset
|
1499 |
975cc2648ee4
(face-default-spec, face-user-default-spec): Make defsubsts.
Miles Bader <miles@gnu.org>
parents:
32758
diff
changeset
|
1500 (defsubst face-user-default-spec (face) |
32758
a0ca98ed466a
(face-user-default-spec, face-default-spec): New functions.
Miles Bader <miles@gnu.org>
parents:
32756
diff
changeset
|
1501 "Return the user's customized face-spec for FACE, or the default if none. |
37467
342409bb6b91
(modify-face): Add compatibility for non-interactive use.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37294
diff
changeset
|
1502 If there is neither a user setting nor a default for FACE, return nil." |
63637
de897c139738
(face-user-default-spec): Try getting `customized-face' prior to `saved-face'.
Juri Linkov <juri@jurta.org>
parents:
63594
diff
changeset
|
1503 (or (get face 'customized-face) |
de897c139738
(face-user-default-spec): Try getting `customized-face' prior to `saved-face'.
Juri Linkov <juri@jurta.org>
parents:
63594
diff
changeset
|
1504 (get face 'saved-face) |
32795
975cc2648ee4
(face-default-spec, face-user-default-spec): Make defsubsts.
Miles Bader <miles@gnu.org>
parents:
32758
diff
changeset
|
1505 (face-default-spec face))) |
25012 | 1506 |
1507 | |
1508 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
26736
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1509 ;;; Frame-type independent color support. |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1510 ;;; We keep the old x-* names as aliases for back-compatibility. |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1511 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1512 |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1513 (defun defined-colors (&optional frame) |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1514 "Return a list of colors supported for a particular frame. |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1515 The argument FRAME specifies which frame to try. |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1516 The value may be different for frames on different display types. |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1517 If FRAME doesn't support colors, the value is nil." |
32752
923b8d6d8277
Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents:
32734
diff
changeset
|
1518 (if (memq (framep (or frame (selected-frame))) '(x w32 mac)) |
26736
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1519 (xw-defined-colors frame) |
27090
52e469fb402a
(read-face-attribute, defined-colors, color-defined-p):
Eli Zaretskii <eliz@gnu.org>
parents:
26927
diff
changeset
|
1520 (mapcar 'car (tty-color-alist frame)))) |
26736
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1521 (defalias 'x-defined-colors 'defined-colors) |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1522 |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1523 (defun color-defined-p (color &optional frame) |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1524 "Return non-nil if color COLOR is supported on frame FRAME. |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1525 If FRAME is omitted or nil, use the selected frame. |
27117
6838a53d4992
(face-read-integer, read-face-attribute)
Eli Zaretskii <eliz@gnu.org>
parents:
27090
diff
changeset
|
1526 If COLOR is the symbol `unspecified' or one of the strings |
6838a53d4992
(face-read-integer, read-face-attribute)
Eli Zaretskii <eliz@gnu.org>
parents:
27090
diff
changeset
|
1527 \"unspecified-fg\" or \"unspecified-bg\", the value is nil." |
32734
92b46ad86f6a
(color-values, color-defined-p): Use `member', not
Miles Bader <miles@gnu.org>
parents:
32649
diff
changeset
|
1528 (if (member color '(unspecified "unspecified-bg" "unspecified-fg")) |
26736
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1529 nil |
32752
923b8d6d8277
Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents:
32734
diff
changeset
|
1530 (if (member (framep (or frame (selected-frame))) '(x w32 mac)) |
26736
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1531 (xw-color-defined-p color frame) |
27090
52e469fb402a
(read-face-attribute, defined-colors, color-defined-p):
Eli Zaretskii <eliz@gnu.org>
parents:
26927
diff
changeset
|
1532 (numberp (tty-color-translate color frame))))) |
26736
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1533 (defalias 'x-color-defined-p 'color-defined-p) |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1534 |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1535 (defun color-values (color &optional frame) |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1536 "Return a description of the color named COLOR on frame FRAME. |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1537 The value is a list of integer RGB values--\(RED GREEN BLUE\). |
31466 | 1538 These values appear to range from 0 65535; white is \(65535 65535 65535\). |
26736
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1539 If FRAME is omitted or nil, use the selected frame. |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1540 If FRAME cannot display COLOR, the value is nil. |
27117
6838a53d4992
(face-read-integer, read-face-attribute)
Eli Zaretskii <eliz@gnu.org>
parents:
27090
diff
changeset
|
1541 If COLOR is the symbol `unspecified' or one of the strings |
6838a53d4992
(face-read-integer, read-face-attribute)
Eli Zaretskii <eliz@gnu.org>
parents:
27090
diff
changeset
|
1542 \"unspecified-fg\" or \"unspecified-bg\", the value is nil." |
32734
92b46ad86f6a
(color-values, color-defined-p): Use `member', not
Miles Bader <miles@gnu.org>
parents:
32649
diff
changeset
|
1543 (if (member color '(unspecified "unspecified-fg" "unspecified-bg")) |
26736
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1544 nil |
32752
923b8d6d8277
Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents:
32734
diff
changeset
|
1545 (if (memq (framep (or frame (selected-frame))) '(x w32 mac)) |
26736
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1546 (xw-color-values color frame) |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1547 (tty-color-values color frame)))) |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1548 (defalias 'x-color-values 'color-values) |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1549 |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1550 (defun display-color-p (&optional display) |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1551 "Return t if DISPLAY supports color. |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1552 The optional argument DISPLAY specifies which display to ask about. |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1553 DISPLAY should be either a frame or a display name (a string). |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1554 If omitted or nil, that stands for the selected frame's display." |
32752
923b8d6d8277
Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents:
32734
diff
changeset
|
1555 (if (memq (framep-on-display display) '(x w32 mac)) |
27571
4a4f7f602836
(display-color-p): Use framep-on-display.
Eli Zaretskii <eliz@gnu.org>
parents:
27117
diff
changeset
|
1556 (xw-display-color-p display) |
4a4f7f602836
(display-color-p): Use framep-on-display.
Eli Zaretskii <eliz@gnu.org>
parents:
27117
diff
changeset
|
1557 (tty-display-color-p display))) |
26736
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1558 (defalias 'x-display-color-p 'display-color-p) |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1559 |
27571
4a4f7f602836
(display-color-p): Use framep-on-display.
Eli Zaretskii <eliz@gnu.org>
parents:
27117
diff
changeset
|
1560 (defun display-grayscale-p (&optional display) |
4a4f7f602836
(display-color-p): Use framep-on-display.
Eli Zaretskii <eliz@gnu.org>
parents:
27117
diff
changeset
|
1561 "Return non-nil if frames on DISPLAY can display shades of gray." |
4a4f7f602836
(display-color-p): Use framep-on-display.
Eli Zaretskii <eliz@gnu.org>
parents:
27117
diff
changeset
|
1562 (let ((frame-type (framep-on-display display))) |
4a4f7f602836
(display-color-p): Use framep-on-display.
Eli Zaretskii <eliz@gnu.org>
parents:
27117
diff
changeset
|
1563 (cond |
4a4f7f602836
(display-color-p): Use framep-on-display.
Eli Zaretskii <eliz@gnu.org>
parents:
27117
diff
changeset
|
1564 ((memq frame-type '(x w32 mac)) |
4a4f7f602836
(display-color-p): Use framep-on-display.
Eli Zaretskii <eliz@gnu.org>
parents:
27117
diff
changeset
|
1565 (x-display-grayscale-p display)) |
4a4f7f602836
(display-color-p): Use framep-on-display.
Eli Zaretskii <eliz@gnu.org>
parents:
27117
diff
changeset
|
1566 (t |
4a4f7f602836
(display-color-p): Use framep-on-display.
Eli Zaretskii <eliz@gnu.org>
parents:
27117
diff
changeset
|
1567 (> (tty-color-gray-shades display) 2))))) |
4a4f7f602836
(display-color-p): Use framep-on-display.
Eli Zaretskii <eliz@gnu.org>
parents:
27117
diff
changeset
|
1568 |
26736
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1569 |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
26657
diff
changeset
|
1570 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
25012 | 1571 ;;; Background mode. |
1572 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
1573 | |
1574 (defcustom frame-background-mode nil | |
1575 "*The brightness of the background. | |
63637
de897c139738
(face-user-default-spec): Try getting `customized-face' prior to `saved-face'.
Juri Linkov <juri@jurta.org>
parents:
63594
diff
changeset
|
1576 Set this to the symbol `dark' if your background color is dark, |
de897c139738
(face-user-default-spec): Try getting `customized-face' prior to `saved-face'.
Juri Linkov <juri@jurta.org>
parents:
63594
diff
changeset
|
1577 `light' if your background is light, or nil (default) if you want Emacs |
de897c139738
(face-user-default-spec): Try getting `customized-face' prior to `saved-face'.
Juri Linkov <juri@jurta.org>
parents:
63594
diff
changeset
|
1578 to examine the brightness for you. Don't set this variable with `setq'; |
30188
d6809f9c7d37
(frame-background-mode): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents:
30010
diff
changeset
|
1579 this won't have the expected effect." |
25012 | 1580 :group 'faces |
1581 :set #'(lambda (var value) | |
29769
18a16ab69699
(frame-background-mode): Use set-default, not set, in setter.
Dave Love <fx@gnu.org>
parents:
29354
diff
changeset
|
1582 (set-default var value) |
31528
a461cad7a942
(face-x-resources): Make custom type more specific.
Dave Love <fx@gnu.org>
parents:
31500
diff
changeset
|
1583 (mapc 'frame-set-background-mode (frame-list))) |
25012 | 1584 :initialize 'custom-initialize-changed |
28840 | 1585 :type '(choice (choice-item dark) |
25012 | 1586 (choice-item light) |
1587 (choice-item :tag "default" nil))) | |
1588 | |
63858
379e37eca752
(default-frame-background-mode): New internal variable.
Juri Linkov <juri@jurta.org>
parents:
63775
diff
changeset
|
1589 (defvar default-frame-background-mode nil |
379e37eca752
(default-frame-background-mode): New internal variable.
Juri Linkov <juri@jurta.org>
parents:
63775
diff
changeset
|
1590 "Internal variable for the default brightness of the background. |
379e37eca752
(default-frame-background-mode): New internal variable.
Juri Linkov <juri@jurta.org>
parents:
63775
diff
changeset
|
1591 Emacs sets it automatically depending on the terminal type. |
379e37eca752
(default-frame-background-mode): New internal variable.
Juri Linkov <juri@jurta.org>
parents:
63775
diff
changeset
|
1592 The value `nil' means `dark'. If Emacs runs in non-windowed |
379e37eca752
(default-frame-background-mode): New internal variable.
Juri Linkov <juri@jurta.org>
parents:
63775
diff
changeset
|
1593 mode from `xterm' or a similar terminal emulator, the value is |
379e37eca752
(default-frame-background-mode): New internal variable.
Juri Linkov <juri@jurta.org>
parents:
63775
diff
changeset
|
1594 `light'. On rxvt terminals, the value depends on the environment |
379e37eca752
(default-frame-background-mode): New internal variable.
Juri Linkov <juri@jurta.org>
parents:
63775
diff
changeset
|
1595 variable COLORFGBG.") |
25012 | 1596 |
1597 (defun frame-set-background-mode (frame) | |
32649
47bf921bccd5
(frame-set-background-mode): `unspecified' &c are symbols, not strings.
Miles Bader <miles@gnu.org>
parents:
32641
diff
changeset
|
1598 "Set up display-dependent faces on FRAME. |
47bf921bccd5
(frame-set-background-mode): `unspecified' &c are symbols, not strings.
Miles Bader <miles@gnu.org>
parents:
32641
diff
changeset
|
1599 Display-dependent faces are those which have different definitions |
47bf921bccd5
(frame-set-background-mode): `unspecified' &c are symbols, not strings.
Miles Bader <miles@gnu.org>
parents:
32641
diff
changeset
|
1600 according to the `background-mode' and `display-type' frame parameters." |
25012 | 1601 (let* ((bg-resource |
1602 (and window-system | |
50025
ffbc79f0f914
(frame-set-background-mode): Fix reference to attribute "backgroundMode".
Juanma Barranquero <lekktu@gmail.com>
parents:
48914
diff
changeset
|
1603 (x-get-resource "backgroundMode" "BackgroundMode"))) |
32641
48709f040160
(frame-set-background-mode): If a tty frame defines a
Eli Zaretskii <eliz@gnu.org>
parents:
32404
diff
changeset
|
1604 (bg-color (frame-parameter frame 'background-color)) |
32376 | 1605 (bg-mode |
1606 (cond (frame-background-mode) | |
32641
48709f040160
(frame-set-background-mode): If a tty frame defines a
Eli Zaretskii <eliz@gnu.org>
parents:
32404
diff
changeset
|
1607 (bg-resource |
48709f040160
(frame-set-background-mode): If a tty frame defines a
Eli Zaretskii <eliz@gnu.org>
parents:
32404
diff
changeset
|
1608 (intern (downcase bg-resource))) |
48709f040160
(frame-set-background-mode): If a tty frame defines a
Eli Zaretskii <eliz@gnu.org>
parents:
32404
diff
changeset
|
1609 ((and (null window-system) (null bg-color)) |
32376 | 1610 ;; No way to determine this automatically (?). |
63858
379e37eca752
(default-frame-background-mode): New internal variable.
Juri Linkov <juri@jurta.org>
parents:
63775
diff
changeset
|
1611 (or default-frame-background-mode 'dark)) |
32641
48709f040160
(frame-set-background-mode): If a tty frame defines a
Eli Zaretskii <eliz@gnu.org>
parents:
32404
diff
changeset
|
1612 ;; Unspecified frame background color can only happen |
48709f040160
(frame-set-background-mode): If a tty frame defines a
Eli Zaretskii <eliz@gnu.org>
parents:
32404
diff
changeset
|
1613 ;; on tty's. |
32734
92b46ad86f6a
(color-values, color-defined-p): Use `member', not
Miles Bader <miles@gnu.org>
parents:
32649
diff
changeset
|
1614 ((member bg-color '(unspecified "unspecified-bg")) |
63858
379e37eca752
(default-frame-background-mode): New internal variable.
Juri Linkov <juri@jurta.org>
parents:
63775
diff
changeset
|
1615 (or default-frame-background-mode 'dark)) |
32734
92b46ad86f6a
(color-values, color-defined-p): Use `member', not
Miles Bader <miles@gnu.org>
parents:
32649
diff
changeset
|
1616 ((equal bg-color "unspecified-fg") ; inverted colors |
63858
379e37eca752
(default-frame-background-mode): New internal variable.
Juri Linkov <juri@jurta.org>
parents:
63775
diff
changeset
|
1617 (if (eq default-frame-background-mode 'light) 'dark 'light)) |
32641
48709f040160
(frame-set-background-mode): If a tty frame defines a
Eli Zaretskii <eliz@gnu.org>
parents:
32404
diff
changeset
|
1618 ((>= (apply '+ (x-color-values bg-color frame)) |
32376 | 1619 ;; Just looking at the screen, colors whose |
1620 ;; values add up to .6 of the white total | |
1621 ;; still look dark to me. | |
1622 (* (apply '+ (x-color-values "white" frame)) .6)) | |
32641
48709f040160
(frame-set-background-mode): If a tty frame defines a
Eli Zaretskii <eliz@gnu.org>
parents:
32404
diff
changeset
|
1623 'light) |
48709f040160
(frame-set-background-mode): If a tty frame defines a
Eli Zaretskii <eliz@gnu.org>
parents:
32404
diff
changeset
|
1624 (t 'dark))) |
32376 | 1625 (display-type |
1626 (cond ((null window-system) | |
1627 (if (tty-display-color-p frame) 'color 'mono)) | |
1628 ((x-display-color-p frame) | |
1629 'color) | |
1630 ((x-display-grayscale-p frame) | |
1631 'grayscale) | |
1632 (t 'mono))) | |
1633 (old-bg-mode | |
1634 (frame-parameter frame 'background-mode)) | |
1635 (old-display-type | |
1636 (frame-parameter frame 'display-type))) | |
1637 | |
1638 (unless (and (eq bg-mode old-bg-mode) (eq display-type old-display-type)) | |
34246
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1639 (let ((locally-modified-faces nil)) |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1640 ;; Before modifying the frame parameters, we collect a list of |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1641 ;; faces that don't match what their face-spec says they should |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1642 ;; look like; we then avoid changing these faces below. A |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1643 ;; negative list is used on the assumption that most faces will |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1644 ;; be unmodified, so we can avoid consing in the common case. |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1645 (dolist (face (face-list)) |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1646 (when (not (face-spec-match-p face |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1647 (face-user-default-spec face) |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1648 (selected-frame))) |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1649 (push face locally-modified-faces))) |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1650 ;; Now change to the new frame parameters |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1651 (modify-frame-parameters frame |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1652 (list (cons 'background-mode bg-mode) |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1653 (cons 'display-type display-type))) |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1654 ;; For all named faces, choose face specs matching the new frame |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1655 ;; parameters, unless they have been locally modified. |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1656 (dolist (face (face-list)) |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1657 (unless (memq face locally-modified-faces) |
e7acfcef56ae
(frame-set-background-mode): Avoid stomping on locally modified faces.
Miles Bader <miles@gnu.org>
parents:
34162
diff
changeset
|
1658 (face-spec-set face (face-user-default-spec face) frame))))))) |
25012 | 1659 |
1660 | |
1661 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
1662 ;;; Frame creation. | |
1663 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
1664 | |
1665 (defun x-handle-named-frame-geometry (parameters) | |
1666 "Add geometry parameters for a named frame to parameter list PARAMETERS. | |
1667 Value is the new parameter list." | |
1668 (let* ((name (or (cdr (assq 'name parameters)) | |
1669 (cdr (assq 'name default-frame-alist)))) | |
1670 (x-resource-name name) | |
1671 (res-geometry (if name (x-get-resource "geometry" "Geometry")))) | |
1672 (when res-geometry | |
1673 (let ((parsed (x-parse-geometry res-geometry))) | |
1674 ;; If the resource specifies a position, call the position | |
1675 ;; and size "user-specified". | |
1676 (when (or (assq 'top parsed) | |
1677 (assq 'left parsed)) | |
1678 (setq parsed (append '((user-position . t) (user-size . t)) parsed))) | |
1679 ;; Put the geometry parameters at the end. Copy | |
1680 ;; default-frame-alist so that they go after it. | |
1681 (setq parameters (append parameters default-frame-alist parsed)))) | |
1682 parameters)) | |
1683 | |
1684 | |
1685 (defun x-handle-reverse-video (frame parameters) | |
1686 "Handle the reverse-video frame parameter and X resource. | |
1687 `x-create-frame' does not handle this one." | |
1688 (when (cdr (or (assq 'reverse parameters) | |
1689 (assq 'reverse default-frame-alist) | |
1690 (let ((resource (x-get-resource "reverseVideo" | |
1691 "ReverseVideo"))) | |
1692 (if resource | |
1693 (cons nil (member (downcase resource) | |
1694 '("on" "true"))))))) | |
1695 (let* ((params (frame-parameters frame)) | |
1696 (bg (cdr (assq 'foreground-color params))) | |
1697 (fg (cdr (assq 'background-color params)))) | |
1698 (modify-frame-parameters frame | |
1699 (list (cons 'foreground-color fg) | |
1700 (cons 'background-color bg))) | |
1701 (if (equal bg (cdr (assq 'border-color params))) | |
1702 (modify-frame-parameters frame | |
1703 (list (cons 'border-color fg)))) | |
1704 (if (equal bg (cdr (assq 'mouse-color params))) | |
1705 (modify-frame-parameters frame | |
1706 (list (cons 'mouse-color fg)))) | |
1707 (if (equal bg (cdr (assq 'cursor-color params))) | |
1708 (modify-frame-parameters frame | |
1709 (list (cons 'cursor-color fg))))))) | |
1710 | |
1711 | |
1712 (defun x-create-frame-with-faces (&optional parameters) | |
1713 "Create a frame from optional frame parameters PARAMETERS. | |
1714 Parameters not specified by PARAMETERS are taken from | |
1715 `default-frame-alist'. If PARAMETERS specify a frame name, | |
1716 handle X geometry resources for that name. If either PARAMETERS | |
1717 or `default-frame-alist' contains a `reverse' parameter, or | |
1718 the X resource ``reverseVideo'' is present, handle that. | |
1719 Value is the new frame created." | |
1720 (setq parameters (x-handle-named-frame-geometry parameters)) | |
1721 (let ((visibility-spec (assq 'visibility parameters)) | |
1722 (frame-list (frame-list)) | |
1723 (frame (x-create-frame (cons '(visibility . nil) parameters))) | |
1724 success) | |
1725 (unwind-protect | |
1726 (progn | |
1727 (x-handle-reverse-video frame parameters) | |
1728 (frame-set-background-mode frame) | |
51248
e21b4eb91135
(x-create-frame-with-faces): Call `face-set-after-frame-default'.
John Paul Wallington <jpw@pobox.com>
parents:
51095
diff
changeset
|
1729 (face-set-after-frame-default frame) |
25012 | 1730 (if (or (null frame-list) (null visibility-spec)) |
1731 (make-frame-visible frame) | |
1732 (modify-frame-parameters frame (list visibility-spec))) | |
1733 (setq success t)) | |
1734 (unless success | |
1735 (delete-frame frame))) | |
1736 frame)) | |
1737 | |
1738 (defun face-set-after-frame-default (frame) | |
25588
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
1739 "Set frame-local faces of FRAME from face specs and resources. |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
1740 Initialize colors of certain faces from frame parameters." |
66360
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
1741 (unless inhibit-face-set-after-frame-default |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
1742 (if (face-attribute 'default :font t) |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
1743 (set-face-attribute 'default frame :font |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
1744 (face-attribute 'default :font t)) |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
1745 (set-face-attribute 'default frame :family |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
1746 (face-attribute 'default :family t)) |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
1747 (set-face-attribute 'default frame :height |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
1748 (face-attribute 'default :height t)) |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
1749 (set-face-attribute 'default frame :slant |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
1750 (face-attribute 'default :slant t)) |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
1751 (set-face-attribute 'default frame :weight |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
1752 (face-attribute 'default :weight t)) |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
1753 (set-face-attribute 'default frame :width |
fcb2ec449238
(inhibit-face-set-after-frame-default): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
66351
diff
changeset
|
1754 (face-attribute 'default :width t)))) |
25012 | 1755 (dolist (face (face-list)) |
51095
8b14c07986ec
(x-create-frame-with-faces): Don't call face-set-after-frame-default.
Richard M. Stallman <rms@gnu.org>
parents:
50025
diff
changeset
|
1756 ;; Don't let frame creation fail because of an invalid face spec. |
48522
70e8f2b6672e
(face-set-after-frame-default): Ignore errors in face-spec-face-set.
Richard M. Stallman <rms@gnu.org>
parents:
47258
diff
changeset
|
1757 (condition-case () |
70e8f2b6672e
(face-set-after-frame-default): Ignore errors in face-spec-face-set.
Richard M. Stallman <rms@gnu.org>
parents:
47258
diff
changeset
|
1758 (when (not (equal face 'default)) |
70e8f2b6672e
(face-set-after-frame-default): Ignore errors in face-spec-face-set.
Richard M. Stallman <rms@gnu.org>
parents:
47258
diff
changeset
|
1759 (face-spec-set face (face-user-default-spec face) frame) |
70e8f2b6672e
(face-set-after-frame-default): Ignore errors in face-spec-face-set.
Richard M. Stallman <rms@gnu.org>
parents:
47258
diff
changeset
|
1760 (internal-merge-in-global-face face frame) |
70e8f2b6672e
(face-set-after-frame-default): Ignore errors in face-spec-face-set.
Richard M. Stallman <rms@gnu.org>
parents:
47258
diff
changeset
|
1761 (when (and (memq window-system '(x w32 mac)) |
70e8f2b6672e
(face-set-after-frame-default): Ignore errors in face-spec-face-set.
Richard M. Stallman <rms@gnu.org>
parents:
47258
diff
changeset
|
1762 (or (not (boundp 'inhibit-default-face-x-resources)) |
70e8f2b6672e
(face-set-after-frame-default): Ignore errors in face-spec-face-set.
Richard M. Stallman <rms@gnu.org>
parents:
47258
diff
changeset
|
1763 (not (eq face 'default)))) |
70e8f2b6672e
(face-set-after-frame-default): Ignore errors in face-spec-face-set.
Richard M. Stallman <rms@gnu.org>
parents:
47258
diff
changeset
|
1764 (make-face-x-resource-internal face frame))) |
70e8f2b6672e
(face-set-after-frame-default): Ignore errors in face-spec-face-set.
Richard M. Stallman <rms@gnu.org>
parents:
47258
diff
changeset
|
1765 (error nil))) |
25588
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
1766 ;; Initialize attributes from frame parameters. |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
1767 (let ((params '((foreground-color default :foreground) |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
1768 (background-color default :background) |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
1769 (border-color border :background) |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
1770 (cursor-color cursor :background) |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
1771 (scroll-bar-foreground scroll-bar :foreground) |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
1772 (scroll-bar-background scroll-bar :background) |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
1773 (mouse-color mouse :background)))) |
33852
01da583dbe56
(face-set-after-frame-default): Let face attributes
Gerd Moellmann <gerd@gnu.org>
parents:
33756
diff
changeset
|
1774 (dolist (param params) |
01da583dbe56
(face-set-after-frame-default): Let face attributes
Gerd Moellmann <gerd@gnu.org>
parents:
33756
diff
changeset
|
1775 (let ((frame-param (frame-parameter frame (nth 0 param))) |
01da583dbe56
(face-set-after-frame-default): Let face attributes
Gerd Moellmann <gerd@gnu.org>
parents:
33756
diff
changeset
|
1776 (face (nth 1 param)) |
01da583dbe56
(face-set-after-frame-default): Let face attributes
Gerd Moellmann <gerd@gnu.org>
parents:
33756
diff
changeset
|
1777 (attr (nth 2 param))) |
01da583dbe56
(face-set-after-frame-default): Let face attributes
Gerd Moellmann <gerd@gnu.org>
parents:
33756
diff
changeset
|
1778 (when (and frame-param |
01da583dbe56
(face-set-after-frame-default): Let face attributes
Gerd Moellmann <gerd@gnu.org>
parents:
33756
diff
changeset
|
1779 ;; Don't override face attributes explicitly |
01da583dbe56
(face-set-after-frame-default): Let face attributes
Gerd Moellmann <gerd@gnu.org>
parents:
33756
diff
changeset
|
1780 ;; specified for new frames. |
01da583dbe56
(face-set-after-frame-default): Let face attributes
Gerd Moellmann <gerd@gnu.org>
parents:
33756
diff
changeset
|
1781 (eq (face-attribute face attr t) 'unspecified)) |
01da583dbe56
(face-set-after-frame-default): Let face attributes
Gerd Moellmann <gerd@gnu.org>
parents:
33756
diff
changeset
|
1782 (set-face-attribute face frame attr frame-param)))))) |
01da583dbe56
(face-set-after-frame-default): Let face attributes
Gerd Moellmann <gerd@gnu.org>
parents:
33756
diff
changeset
|
1783 |
25012 | 1784 |
33008
c30c394884b8
(tty-handle-reverse-video): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
32940
diff
changeset
|
1785 (defun tty-handle-reverse-video (frame parameters) |
c30c394884b8
(tty-handle-reverse-video): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
32940
diff
changeset
|
1786 "Handle the reverse-video frame parameter for terminal frames." |
c30c394884b8
(tty-handle-reverse-video): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
32940
diff
changeset
|
1787 (when (cdr (or (assq 'reverse parameters) |
c30c394884b8
(tty-handle-reverse-video): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
32940
diff
changeset
|
1788 (assq 'reverse default-frame-alist))) |
c30c394884b8
(tty-handle-reverse-video): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
32940
diff
changeset
|
1789 (let* ((params (frame-parameters frame)) |
c30c394884b8
(tty-handle-reverse-video): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
32940
diff
changeset
|
1790 (bg (cdr (assq 'foreground-color params))) |
c30c394884b8
(tty-handle-reverse-video): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
32940
diff
changeset
|
1791 (fg (cdr (assq 'background-color params)))) |
c30c394884b8
(tty-handle-reverse-video): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
32940
diff
changeset
|
1792 (modify-frame-parameters frame |
c30c394884b8
(tty-handle-reverse-video): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
32940
diff
changeset
|
1793 (list (cons 'foreground-color fg) |
c30c394884b8
(tty-handle-reverse-video): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
32940
diff
changeset
|
1794 (cons 'background-color bg))) |
c30c394884b8
(tty-handle-reverse-video): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
32940
diff
changeset
|
1795 (if (equal bg (cdr (assq 'mouse-color params))) |
c30c394884b8
(tty-handle-reverse-video): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
32940
diff
changeset
|
1796 (modify-frame-parameters frame |
c30c394884b8
(tty-handle-reverse-video): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
32940
diff
changeset
|
1797 (list (cons 'mouse-color fg)))) |
c30c394884b8
(tty-handle-reverse-video): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
32940
diff
changeset
|
1798 (if (equal bg (cdr (assq 'cursor-color params))) |
c30c394884b8
(tty-handle-reverse-video): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
32940
diff
changeset
|
1799 (modify-frame-parameters frame |
c30c394884b8
(tty-handle-reverse-video): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
32940
diff
changeset
|
1800 (list (cons 'cursor-color fg))))))) |
c30c394884b8
(tty-handle-reverse-video): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
32940
diff
changeset
|
1801 |
25012 | 1802 |
1803 (defun tty-create-frame-with-faces (&optional parameters) | |
1804 "Create a frame from optional frame parameters PARAMETERS. | |
1805 Parameters not specified by PARAMETERS are taken from | |
1806 `default-frame-alist'. If either PARAMETERS or `default-frame-alist' | |
1807 contains a `reverse' parameter, handle that. Value is the new frame | |
1808 created." | |
1809 (let ((frame (make-terminal-frame parameters)) | |
1810 success) | |
1811 (unwind-protect | |
1812 (progn | |
33008
c30c394884b8
(tty-handle-reverse-video): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
32940
diff
changeset
|
1813 (tty-handle-reverse-video frame (frame-parameters frame)) |
25012 | 1814 (frame-set-background-mode frame) |
1815 (face-set-after-frame-default frame) | |
1816 (setq success t)) | |
1817 (unless success | |
1818 (delete-frame frame))) | |
1819 frame)) | |
1820 | |
1821 | |
1822 ;; Called from C function init_display to initialize faces of the | |
1823 ;; dumped terminal frame on startup. | |
1824 | |
1825 (defun tty-set-up-initial-frame-faces () | |
1826 (let ((frame (selected-frame))) | |
1827 (frame-set-background-mode frame) | |
1828 (face-set-after-frame-default frame))) | |
37943 | 1829 |
25012 | 1830 |
1831 | |
1832 | |
1833 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
1834 ;;; Compatiblity with 20.2 | |
1835 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
1836 | |
1837 ;; Update a frame's faces when we change its default font. | |
1838 | |
55883
cde9d1fff89c
(frame-update-faces): Add empty docstring so the one for `ignore' doesn't
Juanma Barranquero <lekktu@gmail.com>
parents:
55545
diff
changeset
|
1839 (defalias 'frame-update-faces 'ignore "") |
46053
ef0684c3e07b
(frame-update-faces): Fix obsolescence declaration.
Juanma Barranquero <lekktu@gmail.com>
parents:
46041
diff
changeset
|
1840 (make-obsolete 'frame-update-faces "no longer necessary." "21.1") |
25012 | 1841 |
1842 ;; Update the colors of FACE, after FRAME's own colors have been | |
1843 ;; changed. | |
1844 | |
64539
c94d5f576885
(describe-face): "?\ " -> "?\s".
Juanma Barranquero <lekktu@gmail.com>
parents:
64497
diff
changeset
|
1845 (define-obsolete-function-alias 'frame-update-face-colors |
c94d5f576885
(describe-face): "?\ " -> "?\s".
Juanma Barranquero <lekktu@gmail.com>
parents:
64497
diff
changeset
|
1846 'frame-set-background-mode "21.1") |
25012 | 1847 |
1848 | |
1849 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
1850 ;;; Standard faces. | |
1851 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
1852 | |
1853 (defgroup basic-faces nil | |
1854 "The standard faces of Emacs." | |
1855 :group 'faces) | |
1856 | |
1857 (defface default | |
1858 '((t nil)) | |
1859 "Basic default face." | |
1860 :group 'basic-faces) | |
1861 | |
65730
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1862 (defface bold |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1863 '((t :weight bold)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1864 "Basic bold face." |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1865 :group 'basic-faces) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1866 |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1867 (defface italic |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1868 '((((supports :slant italic)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1869 :slant italic) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1870 (((supports :underline t)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1871 :underline t) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1872 (t |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1873 ;; default to italic, even it doesn't appear to be supported, |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1874 ;; because in some cases the display engine will do it's own |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1875 ;; workaround (to `dim' on ttys) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1876 :slant italic)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1877 "Basic italic face." |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1878 :group 'basic-faces) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1879 |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1880 (defface bold-italic |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1881 '((t :weight bold :slant italic)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1882 "Basic bold-italic face." |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1883 :group 'basic-faces) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1884 |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1885 (defface underline |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1886 '((((supports :underline t)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1887 :underline t) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1888 (((supports :weight bold)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1889 :weight bold) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1890 (t :underline t)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1891 "Basic underlined face." |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1892 :group 'basic-faces) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1893 |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1894 (defface fixed-pitch |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1895 '((t :family "courier")) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1896 "The basic fixed-pitch face." |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1897 :group 'basic-faces) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1898 |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1899 (defface variable-pitch |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1900 '((t :family "helv")) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1901 "The basic variable-pitch face." |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1902 :group 'basic-faces) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1903 |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1904 (defface shadow |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1905 '((((class color grayscale) (min-colors 88) (background light)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1906 :foreground "grey50") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1907 (((class color grayscale) (min-colors 88) (background dark)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1908 :foreground "grey70") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1909 (((class color) (min-colors 8) (background light)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1910 :foreground "green") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1911 (((class color) (min-colors 8) (background dark)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1912 :foreground "yellow")) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1913 "Basic face for shadowed text." |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1914 :group 'basic-faces |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1915 :version "22.1") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1916 |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1917 (defface highlight |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1918 '((((class color) (min-colors 88) (background light)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1919 :background "darkseagreen2") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1920 (((class color) (min-colors 88) (background dark)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1921 :background "darkolivegreen") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1922 (((class color) (min-colors 16) (background light)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1923 :background "darkseagreen2") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1924 (((class color) (min-colors 16) (background dark)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1925 :background "darkolivegreen") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1926 (((class color) (min-colors 8)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1927 :background "green" :foreground "black") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1928 (t :inverse-video t)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1929 "Basic face for highlighting." |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1930 :group 'basic-faces) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1931 |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1932 (defface mode-line-highlight |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1933 '((((class color) (min-colors 88)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1934 :box (:line-width 2 :color "grey40" :style released-button)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1935 (t |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1936 :inherit highlight)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1937 "Basic mode line face for highlighting." |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1938 :version "22.1" |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1939 :group 'modeline |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1940 :group 'basic-faces) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1941 |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1942 (defface region |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1943 '((((class color) (min-colors 88) (background dark)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1944 :background "blue3") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1945 (((class color) (min-colors 88) (background light)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1946 :background "lightgoldenrod2") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1947 (((class color) (min-colors 16) (background dark)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1948 :background "blue3") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1949 (((class color) (min-colors 16) (background light)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1950 :background "lightgoldenrod2") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1951 (((class color) (min-colors 8)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1952 :background "blue" :foreground "white") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1953 (((type tty) (class mono)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1954 :inverse-video t) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1955 (t :background "gray")) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1956 "Basic face for highlighting the region." |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1957 :version "21.1" |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1958 :group 'basic-faces) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1959 |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1960 (defface secondary-selection |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1961 '((((class color) (min-colors 88) (background light)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1962 :background "yellow1") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1963 (((class color) (min-colors 88) (background dark)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1964 :background "SkyBlue4") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1965 (((class color) (min-colors 16) (background light)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1966 :background "yellow") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1967 (((class color) (min-colors 16) (background dark)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1968 :background "SkyBlue4") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1969 (((class color) (min-colors 8)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1970 :background "cyan" :foreground "black") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1971 (t :inverse-video t)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1972 "Basic face for displaying the secondary selection." |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1973 :group 'basic-faces) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1974 |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1975 (defface trailing-whitespace |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1976 '((((class color) (background light)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1977 :background "red1") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1978 (((class color) (background dark)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1979 :background "red1") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1980 (t :inverse-video t)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1981 "Basic face for highlighting trailing whitespace." |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1982 :version "21.1" |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1983 :group 'whitespace ; like `show-trailing-whitespace' |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1984 :group 'basic-faces) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1985 |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1986 (defface escape-glyph |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1987 '((((background dark)) :foreground "cyan") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1988 ;; See the comment in minibuffer-prompt for |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1989 ;; the reason not to use blue on MS-DOS. |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1990 (((type pc)) :foreground "magenta") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1991 ;; red4 is too dark, but some say blue is too loud. |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1992 ;; brown seems to work ok. -- rms. |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1993 (t :foreground "brown")) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1994 "Face for characters displayed as ^-sequences or \-sequences." |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1995 :group 'basic-faces |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1996 :version "22.1") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1997 |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1998 (defface nobreak-space |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
1999 '((((class color) (min-colors 88)) :inherit escape-glyph :underline t) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2000 (((class color) (min-colors 8)) :background "magenta") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2001 (t :inverse-video t)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2002 "Face for displaying nobreak space." |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2003 :group 'basic-faces |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2004 :version "22.1") |
25012 | 2005 |
25650
8b06b47a1fea
(mode-line): Replaces `modeline'.
Gerd Moellmann <gerd@gnu.org>
parents:
25616
diff
changeset
|
2006 (defface mode-line |
59077
294a7f7e3daf
(mode-line, mode-line-inactive): Use min-colors.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59054
diff
changeset
|
2007 '((((class color) (min-colors 88)) |
43711
d15360503e4e
(face-spec-choose): Allow `t' to appear before the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43550
diff
changeset
|
2008 :box (:line-width -1 :style released-button) |
d15360503e4e
(face-spec-choose): Allow `t' to appear before the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43550
diff
changeset
|
2009 :background "grey75" :foreground "black") |
25012 | 2010 (t |
43711
d15360503e4e
(face-spec-choose): Allow `t' to appear before the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43550
diff
changeset
|
2011 :inverse-video t)) |
43204
1b0f33edf842
(mode-line-inactive): New face for mode-line for
Kim F. Storm <storm@cua.dk>
parents:
42969
diff
changeset
|
2012 "Basic mode line face for selected window." |
25687
afad62240679
(mode-line, header-line, tool-bar, ): Add :version.
Dave Love <fx@gnu.org>
parents:
25650
diff
changeset
|
2013 :version "21.1" |
27716
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
2014 :group 'modeline |
25012 | 2015 :group 'basic-faces) |
2016 | |
43204
1b0f33edf842
(mode-line-inactive): New face for mode-line for
Kim F. Storm <storm@cua.dk>
parents:
42969
diff
changeset
|
2017 (defface mode-line-inactive |
58935
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
2018 '((default |
43711
d15360503e4e
(face-spec-choose): Allow `t' to appear before the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43550
diff
changeset
|
2019 :inherit mode-line) |
59077
294a7f7e3daf
(mode-line, mode-line-inactive): Use min-colors.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59054
diff
changeset
|
2020 (((class color) (min-colors 88) (background light)) |
43204
1b0f33edf842
(mode-line-inactive): New face for mode-line for
Kim F. Storm <storm@cua.dk>
parents:
42969
diff
changeset
|
2021 :weight light |
1b0f33edf842
(mode-line-inactive): New face for mode-line for
Kim F. Storm <storm@cua.dk>
parents:
42969
diff
changeset
|
2022 :box (:line-width -1 :color "grey75" :style nil) |
1b0f33edf842
(mode-line-inactive): New face for mode-line for
Kim F. Storm <storm@cua.dk>
parents:
42969
diff
changeset
|
2023 :foreground "grey20" :background "grey90") |
59077
294a7f7e3daf
(mode-line, mode-line-inactive): Use min-colors.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59054
diff
changeset
|
2024 (((class color) (min-colors 88) (background dark) ) |
43247
4c5a2e2ddf43
(mode-line-inactive): Add dark-background variant.
Miles Bader <miles@gnu.org>
parents:
43204
diff
changeset
|
2025 :weight light |
4c5a2e2ddf43
(mode-line-inactive): Add dark-background variant.
Miles Bader <miles@gnu.org>
parents:
43204
diff
changeset
|
2026 :box (:line-width -1 :color "grey40" :style nil) |
43711
d15360503e4e
(face-spec-choose): Allow `t' to appear before the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43550
diff
changeset
|
2027 :foreground "grey80" :background "grey30")) |
43204
1b0f33edf842
(mode-line-inactive): New face for mode-line for
Kim F. Storm <storm@cua.dk>
parents:
42969
diff
changeset
|
2028 "Basic mode line face for non-selected windows." |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59872
diff
changeset
|
2029 :version "22.1" |
43204
1b0f33edf842
(mode-line-inactive): New face for mode-line for
Kim F. Storm <storm@cua.dk>
parents:
42969
diff
changeset
|
2030 :group 'modeline |
1b0f33edf842
(mode-line-inactive): New face for mode-line for
Kim F. Storm <storm@cua.dk>
parents:
42969
diff
changeset
|
2031 :group 'basic-faces) |
1b0f33edf842
(mode-line-inactive): New face for mode-line for
Kim F. Storm <storm@cua.dk>
parents:
42969
diff
changeset
|
2032 |
25650
8b06b47a1fea
(mode-line): Replaces `modeline'.
Gerd Moellmann <gerd@gnu.org>
parents:
25616
diff
changeset
|
2033 ;; Make `modeline' an alias for `mode-line', for compatibility. |
8b06b47a1fea
(mode-line): Replaces `modeline'.
Gerd Moellmann <gerd@gnu.org>
parents:
25616
diff
changeset
|
2034 (put 'modeline 'face-alias 'mode-line) |
43204
1b0f33edf842
(mode-line-inactive): New face for mode-line for
Kim F. Storm <storm@cua.dk>
parents:
42969
diff
changeset
|
2035 (put 'modeline-inactive 'face-alias 'mode-line-inactive) |
63311
212616057d0b
(modeline-highlight): Rename from (the erroneous) `modeline-higilight'.
Eli Zaretskii <eliz@gnu.org>
parents:
63140
diff
changeset
|
2036 (put 'modeline-highlight 'face-alias 'mode-line-highlight) |
25012 | 2037 |
25545
b0a117037bde
(header-line): Renamed from `top-line'.
Gerd Moellmann <gerd@gnu.org>
parents:
25542
diff
changeset
|
2038 (defface header-line |
58935
95bb6b9a27a3
(header-line, mode-line-inactive, tool-bar):
Richard M. Stallman <rms@gnu.org>
parents:
58851
diff
changeset
|
2039 '((default |
54574
76b831799f4d
(read-face-font): Don't cons up unnecessarily.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54161
diff
changeset
|
2040 :inherit mode-line) |
76b831799f4d
(read-face-font): Don't cons up unnecessarily.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54161
diff
changeset
|
2041 (((type tty)) |
32404
d355f52b4497
(header-line): Change tty-variant to use underlining.
Miles Bader <miles@gnu.org>
parents:
32378
diff
changeset
|
2042 ;; This used to be `:inverse-video t', but that doesn't look very |
d355f52b4497
(header-line): Change tty-variant to use underlining.
Miles Bader <miles@gnu.org>
parents:
32378
diff
changeset
|
2043 ;; good when combined with inverse-video mode-lines and multiple |
d355f52b4497
(header-line): Change tty-variant to use underlining.
Miles Bader <miles@gnu.org>
parents:
32378
diff
changeset
|
2044 ;; windows. Underlining looks better, and is more consistent with |
d355f52b4497
(header-line): Change tty-variant to use underlining.
Miles Bader <miles@gnu.org>
parents:
32378
diff
changeset
|
2045 ;; the window-system face variants, which deemphasize the |
d355f52b4497
(header-line): Change tty-variant to use underlining.
Miles Bader <miles@gnu.org>
parents:
32378
diff
changeset
|
2046 ;; header-line in relation to the mode-line face. If a terminal |
d355f52b4497
(header-line): Change tty-variant to use underlining.
Miles Bader <miles@gnu.org>
parents:
32378
diff
changeset
|
2047 ;; can't underline, then the header-line will end up without any |
d355f52b4497
(header-line): Change tty-variant to use underlining.
Miles Bader <miles@gnu.org>
parents:
32378
diff
changeset
|
2048 ;; highlighting; this may be too confusing in general, although it |
d355f52b4497
(header-line): Change tty-variant to use underlining.
Miles Bader <miles@gnu.org>
parents:
32378
diff
changeset
|
2049 ;; happens to look good with the only current use of header-lines, |
d355f52b4497
(header-line): Change tty-variant to use underlining.
Miles Bader <miles@gnu.org>
parents:
32378
diff
changeset
|
2050 ;; the info browser. XXX |
54574
76b831799f4d
(read-face-font): Don't cons up unnecessarily.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54161
diff
changeset
|
2051 :inverse-video nil ;Override the value inherited from mode-line. |
46146
f883ac732e39
(header-line): Don't use a `common' clause for inheriting from the mode-line
Miles Bader <miles@gnu.org>
parents:
46145
diff
changeset
|
2052 :underline t) |
32756
ccfb1ed059ca
(header-line): Make more reasonable on mono/grayscale displays.
Miles Bader <miles@gnu.org>
parents:
32752
diff
changeset
|
2053 (((class color grayscale) (background light)) |
33465
900ca3da6e01
(header-line): Use `:box nil' for color/gs displays too.
Miles Bader <miles@gnu.org>
parents:
33447
diff
changeset
|
2054 :background "grey90" :foreground "grey20" |
54574
76b831799f4d
(read-face-font): Don't cons up unnecessarily.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54161
diff
changeset
|
2055 :box nil) |
32756
ccfb1ed059ca
(header-line): Make more reasonable on mono/grayscale displays.
Miles Bader <miles@gnu.org>
parents:
32752
diff
changeset
|
2056 (((class color grayscale) (background dark)) |
33465
900ca3da6e01
(header-line): Use `:box nil' for color/gs displays too.
Miles Bader <miles@gnu.org>
parents:
33447
diff
changeset
|
2057 :background "grey20" :foreground "grey90" |
54574
76b831799f4d
(read-face-font): Don't cons up unnecessarily.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54161
diff
changeset
|
2058 :box nil) |
32756
ccfb1ed059ca
(header-line): Make more reasonable on mono/grayscale displays.
Miles Bader <miles@gnu.org>
parents:
32752
diff
changeset
|
2059 (((class mono) (background light)) |
33465
900ca3da6e01
(header-line): Use `:box nil' for color/gs displays too.
Miles Bader <miles@gnu.org>
parents:
33447
diff
changeset
|
2060 :background "white" :foreground "black" |
900ca3da6e01
(header-line): Use `:box nil' for color/gs displays too.
Miles Bader <miles@gnu.org>
parents:
33447
diff
changeset
|
2061 :inverse-video nil |
900ca3da6e01
(header-line): Use `:box nil' for color/gs displays too.
Miles Bader <miles@gnu.org>
parents:
33447
diff
changeset
|
2062 :box nil |
54574
76b831799f4d
(read-face-font): Don't cons up unnecessarily.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54161
diff
changeset
|
2063 :underline t) |
32756
ccfb1ed059ca
(header-line): Make more reasonable on mono/grayscale displays.
Miles Bader <miles@gnu.org>
parents:
32752
diff
changeset
|
2064 (((class mono) (background dark)) |
33465
900ca3da6e01
(header-line): Use `:box nil' for color/gs displays too.
Miles Bader <miles@gnu.org>
parents:
33447
diff
changeset
|
2065 :background "black" :foreground "white" |
900ca3da6e01
(header-line): Use `:box nil' for color/gs displays too.
Miles Bader <miles@gnu.org>
parents:
33447
diff
changeset
|
2066 :inverse-video nil |
900ca3da6e01
(header-line): Use `:box nil' for color/gs displays too.
Miles Bader <miles@gnu.org>
parents:
33447
diff
changeset
|
2067 :box nil |
54574
76b831799f4d
(read-face-font): Don't cons up unnecessarily.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54161
diff
changeset
|
2068 :underline t)) |
25545
b0a117037bde
(header-line): Renamed from `top-line'.
Gerd Moellmann <gerd@gnu.org>
parents:
25542
diff
changeset
|
2069 "Basic header-line face." |
25687
afad62240679
(mode-line, header-line, tool-bar, ): Add :version.
Dave Love <fx@gnu.org>
parents:
25650
diff
changeset
|
2070 :version "21.1" |
25012 | 2071 :group 'basic-faces) |
2072 | |
65730
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2073 (defface vertical-border |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2074 '((((type tty)) :inherit mode-line-inactive)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2075 "Face used for vertical window dividers on ttys." |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2076 :version "22.1" |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2077 :group 'modeline |
25012 | 2078 :group 'basic-faces) |
2079 | |
65084
87a66a9a9328
(minibuffer-prompt): Doc fix.
Juri Linkov <juri@jurta.org>
parents:
65068
diff
changeset
|
2080 (defface minibuffer-prompt |
87a66a9a9328
(minibuffer-prompt): Doc fix.
Juri Linkov <juri@jurta.org>
parents:
65068
diff
changeset
|
2081 '((((background dark)) :foreground "cyan") |
87a66a9a9328
(minibuffer-prompt): Doc fix.
Juri Linkov <juri@jurta.org>
parents:
65068
diff
changeset
|
2082 ;; Don't use blue because many users of the MS-DOS port customize |
87a66a9a9328
(minibuffer-prompt): Doc fix.
Juri Linkov <juri@jurta.org>
parents:
65068
diff
changeset
|
2083 ;; their foreground color to be blue. |
87a66a9a9328
(minibuffer-prompt): Doc fix.
Juri Linkov <juri@jurta.org>
parents:
65068
diff
changeset
|
2084 (((type pc)) :foreground "magenta") |
87a66a9a9328
(minibuffer-prompt): Doc fix.
Juri Linkov <juri@jurta.org>
parents:
65068
diff
changeset
|
2085 (t :foreground "dark blue")) |
87a66a9a9328
(minibuffer-prompt): Doc fix.
Juri Linkov <juri@jurta.org>
parents:
65068
diff
changeset
|
2086 "Face for minibuffer prompts. |
87a66a9a9328
(minibuffer-prompt): Doc fix.
Juri Linkov <juri@jurta.org>
parents:
65068
diff
changeset
|
2087 By default, Emacs automatically adds this face to the value of |
87a66a9a9328
(minibuffer-prompt): Doc fix.
Juri Linkov <juri@jurta.org>
parents:
65068
diff
changeset
|
2088 `minibuffer-prompt-properties', which is a list of text properties |
87a66a9a9328
(minibuffer-prompt): Doc fix.
Juri Linkov <juri@jurta.org>
parents:
65068
diff
changeset
|
2089 used to display the prompt text." |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59872
diff
changeset
|
2090 :version "22.1" |
42298
d020b569f212
(minibuffer-prompt): New face.
Richard M. Stallman <rms@gnu.org>
parents:
40456
diff
changeset
|
2091 :group 'basic-faces) |
d020b569f212
(minibuffer-prompt): New face.
Richard M. Stallman <rms@gnu.org>
parents:
40456
diff
changeset
|
2092 |
d020b569f212
(minibuffer-prompt): New face.
Richard M. Stallman <rms@gnu.org>
parents:
40456
diff
changeset
|
2093 (setq minibuffer-prompt-properties |
d020b569f212
(minibuffer-prompt): New face.
Richard M. Stallman <rms@gnu.org>
parents:
40456
diff
changeset
|
2094 (append minibuffer-prompt-properties (list 'face 'minibuffer-prompt))) |
d020b569f212
(minibuffer-prompt): New face.
Richard M. Stallman <rms@gnu.org>
parents:
40456
diff
changeset
|
2095 |
25588
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2096 (defface fringe |
29943
b8314fd10792
(fringe): Change face for different backgrounds.
Gerd Moellmann <gerd@gnu.org>
parents:
29880
diff
changeset
|
2097 '((((class color) (background light)) |
43711
d15360503e4e
(face-spec-choose): Allow `t' to appear before the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43550
diff
changeset
|
2098 :background "grey95") |
d15360503e4e
(face-spec-choose): Allow `t' to appear before the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43550
diff
changeset
|
2099 (((class color) (background dark)) |
d15360503e4e
(face-spec-choose): Allow `t' to appear before the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43550
diff
changeset
|
2100 :background "grey10") |
d15360503e4e
(face-spec-choose): Allow `t' to appear before the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43550
diff
changeset
|
2101 (t |
d15360503e4e
(face-spec-choose): Allow `t' to appear before the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43550
diff
changeset
|
2102 :background "gray")) |
25588
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2103 "Basic face for the fringes to the left and right of windows under X." |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2104 :version "21.1" |
27716
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
2105 :group 'frames |
25588
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2106 :group 'basic-faces) |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2107 |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2108 (defface scroll-bar '() |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2109 "Basic face for the scroll bar colors under X." |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2110 :version "21.1" |
27716
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
2111 :group 'frames |
25588
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2112 :group 'basic-faces) |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2113 |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2114 (defface border '() |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2115 "Basic face for the frame border under X." |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2116 :version "21.1" |
27716
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
2117 :group 'frames |
25588
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2118 :group 'basic-faces) |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2119 |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2120 (defface cursor '() |
57105
8f14c8ea51a1
(cursor): Add face-no-inherit property. Doc fix.
Kim F. Storm <storm@cua.dk>
parents:
55902
diff
changeset
|
2121 "Basic face for the cursor color under X. |
8f14c8ea51a1
(cursor): Add face-no-inherit property. Doc fix.
Kim F. Storm <storm@cua.dk>
parents:
55902
diff
changeset
|
2122 Note: Other faces cannot inherit from the cursor face." |
25588
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2123 :version "21.1" |
27716
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
2124 :group 'cursor |
25588
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2125 :group 'basic-faces) |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2126 |
57105
8f14c8ea51a1
(cursor): Add face-no-inherit property. Doc fix.
Kim F. Storm <storm@cua.dk>
parents:
55902
diff
changeset
|
2127 (put 'cursor 'face-no-inherit t) |
25588
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2128 |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2129 (defface mouse '() |
1d8ba3dd04e9
(face-set-after-frame-default): Initialize some
Gerd Moellmann <gerd@gnu.org>
parents:
25561
diff
changeset
|
2130 "Basic face for the mouse color under X." |
25137 | 2131 :version "21.1" |
27716
a3d981ee3185
Don't require custom. Add more specific :groups to various deffaces.
Dave Love <fx@gnu.org>
parents:
27571
diff
changeset
|
2132 :group 'mouse |
25012 | 2133 :group 'basic-faces) |
2134 | |
65730
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2135 (defface tool-bar |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2136 '((default |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2137 :box (:line-width 1 :style released-button) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2138 :foreground "black") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2139 (((type x w32 mac) (class color)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2140 :background "grey75") |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2141 (((type x) (class mono)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2142 :background "grey")) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2143 "Basic tool-bar face." |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2144 :version "21.1" |
25687
afad62240679
(mode-line, header-line, tool-bar, ): Add :version.
Dave Love <fx@gnu.org>
parents:
25650
diff
changeset
|
2145 :group 'basic-faces) |
25012 | 2146 |
65730
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2147 (defface menu |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2148 '((((type tty)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2149 :inverse-video t) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2150 (((type x-toolkit)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2151 ) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2152 (t |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2153 :inverse-video t)) |
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2154 "Basic face for the font and colors of the menu bar and popup menus." |
25687
afad62240679
(mode-line, header-line, tool-bar, ): Add :version.
Dave Love <fx@gnu.org>
parents:
25650
diff
changeset
|
2155 :version "21.1" |
65730
a9f7501916e6
Rearrange face definitions to be in the same order as
Juri Linkov <juri@jurta.org>
parents:
65289
diff
changeset
|
2156 :group 'menu |
25687
afad62240679
(mode-line, header-line, tool-bar, ): Add :version.
Dave Love <fx@gnu.org>
parents:
25650
diff
changeset
|
2157 :group 'basic-faces) |
25012 | 2158 |
2159 | |
2160 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
2161 ;;; Manipulating font names. | |
2162 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
2163 | |
2164 ;; This is here for compatibilty with Emacs 20.2. For example, | |
28907 | 2165 ;; international/fontset.el uses x-resolve-font-name. The following |
2166 ;; functions are not used in the face implementation itself. | |
2456 | 2167 |
16687
049c87a96dca
Change defconsts to defvars.
Richard M. Stallman <rms@gnu.org>
parents:
16590
diff
changeset
|
2168 (defvar x-font-regexp nil) |
049c87a96dca
Change defconsts to defvars.
Richard M. Stallman <rms@gnu.org>
parents:
16590
diff
changeset
|
2169 (defvar x-font-regexp-head nil) |
049c87a96dca
Change defconsts to defvars.
Richard M. Stallman <rms@gnu.org>
parents:
16590
diff
changeset
|
2170 (defvar x-font-regexp-weight nil) |
049c87a96dca
Change defconsts to defvars.
Richard M. Stallman <rms@gnu.org>
parents:
16590
diff
changeset
|
2171 (defvar x-font-regexp-slant nil) |
2456 | 2172 |
12668
7660e82d0346
(x-font-regexp-weight-subnum, x-font-regexp-slant-subnum)
Karl Heuer <kwzh@gnu.org>
parents:
12651
diff
changeset
|
2173 (defconst x-font-regexp-weight-subnum 1) |
7660e82d0346
(x-font-regexp-weight-subnum, x-font-regexp-slant-subnum)
Karl Heuer <kwzh@gnu.org>
parents:
12651
diff
changeset
|
2174 (defconst x-font-regexp-slant-subnum 2) |
7660e82d0346
(x-font-regexp-weight-subnum, x-font-regexp-slant-subnum)
Karl Heuer <kwzh@gnu.org>
parents:
12651
diff
changeset
|
2175 (defconst x-font-regexp-swidth-subnum 3) |
7660e82d0346
(x-font-regexp-weight-subnum, x-font-regexp-slant-subnum)
Karl Heuer <kwzh@gnu.org>
parents:
12651
diff
changeset
|
2176 (defconst x-font-regexp-adstyle-subnum 4) |
7660e82d0346
(x-font-regexp-weight-subnum, x-font-regexp-slant-subnum)
Karl Heuer <kwzh@gnu.org>
parents:
12651
diff
changeset
|
2177 |
2456 | 2178 ;;; Regexps matching font names in "Host Portable Character Representation." |
2179 ;;; | |
2180 (let ((- "[-?]") | |
2181 (foundry "[^-]+") | |
2182 (family "[^-]+") | |
2183 (weight "\\(bold\\|demibold\\|medium\\)") ; 1 | |
2184 ; (weight\? "\\(\\*\\|bold\\|demibold\\|medium\\|\\)") ; 1 | |
2185 (weight\? "\\([^-]*\\)") ; 1 | |
2186 (slant "\\([ior]\\)") ; 2 | |
2187 ; (slant\? "\\([ior?*]?\\)") ; 2 | |
2188 (slant\? "\\([^-]?\\)") ; 2 | |
2189 ; (swidth "\\(\\*\\|normal\\|semicondensed\\|\\)") ; 3 | |
2190 (swidth "\\([^-]*\\)") ; 3 | |
2191 ; (adstyle "\\(\\*\\|sans\\|\\)") ; 4 | |
12690
e2d3fa52d100
(x-font-regexp): Add \\(\\) for substring extraction.
Karl Heuer <kwzh@gnu.org>
parents:
12668
diff
changeset
|
2192 (adstyle "\\([^-]*\\)") ; 4 |
2456 | 2193 (pixelsize "[0-9]+") |
2194 (pointsize "[0-9][0-9]+") | |
2195 (resx "[0-9][0-9]+") | |
2196 (resy "[0-9][0-9]+") | |
2197 (spacing "[cmp?*]") | |
2198 (avgwidth "[0-9]+") | |
2199 (registry "[^-]+") | |
2200 (encoding "[^-]+") | |
2201 ) | |
2202 (setq x-font-regexp | |
2203 (concat "\\`\\*?[-?*]" | |
2204 foundry - family - weight\? - slant\? - swidth - adstyle - | |
12475
eb436b0c4ab3
(x-font-regexp): Include the avgwidth.
Richard M. Stallman <rms@gnu.org>
parents:
12460
diff
changeset
|
2205 pixelsize - pointsize - resx - resy - spacing - avgwidth - |
eb436b0c4ab3
(x-font-regexp): Include the avgwidth.
Richard M. Stallman <rms@gnu.org>
parents:
12460
diff
changeset
|
2206 registry - encoding "\\*?\\'" |
2456 | 2207 )) |
2208 (setq x-font-regexp-head | |
2209 (concat "\\`[-?*]" foundry - family - weight\? - slant\? | |
2210 "\\([-*?]\\|\\'\\)")) | |
2211 (setq x-font-regexp-slant (concat - slant -)) | |
2212 (setq x-font-regexp-weight (concat - weight -)) | |
28840 | 2213 nil) |
2456 | 2214 |
25012 | 2215 |
3071
68de05fb5751
* faces.el (set-face-font): Call x-resolve-font-name on the font
Jim Blandy <jimb@redhat.com>
parents:
3049
diff
changeset
|
2216 (defun x-resolve-font-name (pattern &optional face frame) |
68de05fb5751
* faces.el (set-face-font): Call x-resolve-font-name on the font
Jim Blandy <jimb@redhat.com>
parents:
3049
diff
changeset
|
2217 "Return a font name matching PATTERN. |
28849
76e727bc0dfd
Fix make-obsolete for internal-get-face.
Dave Love <fx@gnu.org>
parents:
28840
diff
changeset
|
2218 All wildcards in PATTERN are instantiated. |
3130
82c29bacb6b3
* faces.el (x-resolve-font-name): If PATTERN is nil, return the
Jim Blandy <jimb@redhat.com>
parents:
3071
diff
changeset
|
2219 If PATTERN is nil, return the name of the frame's base font, which never |
82c29bacb6b3
* faces.el (x-resolve-font-name): If PATTERN is nil, return the
Jim Blandy <jimb@redhat.com>
parents:
3071
diff
changeset
|
2220 contains wildcards. |
10170
5fc240a3e4a0
(face-initialize): Test for framep not t or nil.
Richard M. Stallman <rms@gnu.org>
parents:
10107
diff
changeset
|
2221 Given optional arguments FACE and FRAME, return a font which is |
5fc240a3e4a0
(face-initialize): Test for framep not t or nil.
Richard M. Stallman <rms@gnu.org>
parents:
10107
diff
changeset
|
2222 also the same size as FACE on FRAME, or fail." |
3233
28b2df35c33e
(x-resolve-font-name): Allow symbol as FACE arg.
Richard M. Stallman <rms@gnu.org>
parents:
3182
diff
changeset
|
2223 (or (symbolp face) |
28b2df35c33e
(x-resolve-font-name): Allow symbol as FACE arg.
Richard M. Stallman <rms@gnu.org>
parents:
3182
diff
changeset
|
2224 (setq face (face-name face))) |
28b2df35c33e
(x-resolve-font-name): Allow symbol as FACE arg.
Richard M. Stallman <rms@gnu.org>
parents:
3182
diff
changeset
|
2225 (and (eq frame t) |
28b2df35c33e
(x-resolve-font-name): Allow symbol as FACE arg.
Richard M. Stallman <rms@gnu.org>
parents:
3182
diff
changeset
|
2226 (setq frame nil)) |
3130
82c29bacb6b3
* faces.el (x-resolve-font-name): If PATTERN is nil, return the
Jim Blandy <jimb@redhat.com>
parents:
3071
diff
changeset
|
2227 (if pattern |
5092
36508a7c0a3f
(x-resolve-font-name): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents:
5081
diff
changeset
|
2228 ;; Note that x-list-fonts has code to handle a face with nil as its font. |
16002
c8cbde1d3f11
(internal-set-face-1): When calling x-list-fonts, ask for just one match.
Richard M. Stallman <rms@gnu.org>
parents:
15884
diff
changeset
|
2229 (let ((fonts (x-list-fonts pattern face frame 1))) |
3130
82c29bacb6b3
* faces.el (x-resolve-font-name): If PATTERN is nil, return the
Jim Blandy <jimb@redhat.com>
parents:
3071
diff
changeset
|
2230 (or fonts |
82c29bacb6b3
* faces.el (x-resolve-font-name): If PATTERN is nil, return the
Jim Blandy <jimb@redhat.com>
parents:
3071
diff
changeset
|
2231 (if face |
10584 | 2232 (if (string-match "\\*" pattern) |
2233 (if (null (face-font face)) | |
2234 (error "No matching fonts are the same height as the frame default font") | |
2235 (error "No matching fonts are the same height as face `%s'" face)) | |
2236 (if (null (face-font face)) | |
2237 (error "Height of font `%s' doesn't match the frame default font" | |
2238 pattern) | |
2239 (error "Height of font `%s' doesn't match face `%s'" | |
2240 pattern face))) | |
3353
8cbd38886eef
(x-resolve-font-name): Clean up error messages.
Richard M. Stallman <rms@gnu.org>
parents:
3298
diff
changeset
|
2241 (error "No fonts match `%s'" pattern))) |
3130
82c29bacb6b3
* faces.el (x-resolve-font-name): If PATTERN is nil, return the
Jim Blandy <jimb@redhat.com>
parents:
3071
diff
changeset
|
2242 (car fonts)) |
82c29bacb6b3
* faces.el (x-resolve-font-name): If PATTERN is nil, return the
Jim Blandy <jimb@redhat.com>
parents:
3071
diff
changeset
|
2243 (cdr (assq 'font (frame-parameters (selected-frame)))))) |
3071
68de05fb5751
* faces.el (set-face-font): Call x-resolve-font-name on the font
Jim Blandy <jimb@redhat.com>
parents:
3049
diff
changeset
|
2244 |
25012 | 2245 |
2456 | 2246 (defun x-frob-font-weight (font which) |
13704
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2247 (let ((case-fold-search t)) |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2248 (cond ((string-match x-font-regexp font) |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2249 (concat (substring font 0 |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2250 (match-beginning x-font-regexp-weight-subnum)) |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2251 which |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2252 (substring font (match-end x-font-regexp-weight-subnum) |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2253 (match-beginning x-font-regexp-adstyle-subnum)) |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2254 ;; Replace the ADD_STYLE_NAME field with * |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2255 ;; because the info in it may not be the same |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2256 ;; for related fonts. |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2257 "*" |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2258 (substring font (match-end x-font-regexp-adstyle-subnum)))) |
14880
b405f39b5493
(x-frob-font-slant): Properly handle a match against
Richard M. Stallman <rms@gnu.org>
parents:
14409
diff
changeset
|
2259 ((string-match x-font-regexp-head font) |
b405f39b5493
(x-frob-font-slant): Properly handle a match against
Richard M. Stallman <rms@gnu.org>
parents:
14409
diff
changeset
|
2260 (concat (substring font 0 (match-beginning 1)) which |
b405f39b5493
(x-frob-font-slant): Properly handle a match against
Richard M. Stallman <rms@gnu.org>
parents:
14409
diff
changeset
|
2261 (substring font (match-end 1)))) |
b405f39b5493
(x-frob-font-slant): Properly handle a match against
Richard M. Stallman <rms@gnu.org>
parents:
14409
diff
changeset
|
2262 ((string-match x-font-regexp-weight font) |
13704
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2263 (concat (substring font 0 (match-beginning 1)) which |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2264 (substring font (match-end 1))))))) |
29354
4ed4a700358b
Update calls to make-obsolete with a WHEN argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28907
diff
changeset
|
2265 (make-obsolete 'x-frob-font-weight 'make-face-... "21.1") |
25012 | 2266 |
2456 | 2267 (defun x-frob-font-slant (font which) |
13704
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2268 (let ((case-fold-search t)) |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2269 (cond ((string-match x-font-regexp font) |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2270 (concat (substring font 0 |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2271 (match-beginning x-font-regexp-slant-subnum)) |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2272 which |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2273 (substring font (match-end x-font-regexp-slant-subnum) |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2274 (match-beginning x-font-regexp-adstyle-subnum)) |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2275 ;; Replace the ADD_STYLE_NAME field with * |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2276 ;; because the info in it may not be the same |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2277 ;; for related fonts. |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2278 "*" |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2279 (substring font (match-end x-font-regexp-adstyle-subnum)))) |
14880
b405f39b5493
(x-frob-font-slant): Properly handle a match against
Richard M. Stallman <rms@gnu.org>
parents:
14409
diff
changeset
|
2280 ((string-match x-font-regexp-head font) |
b405f39b5493
(x-frob-font-slant): Properly handle a match against
Richard M. Stallman <rms@gnu.org>
parents:
14409
diff
changeset
|
2281 (concat (substring font 0 (match-beginning 2)) which |
b405f39b5493
(x-frob-font-slant): Properly handle a match against
Richard M. Stallman <rms@gnu.org>
parents:
14409
diff
changeset
|
2282 (substring font (match-end 2)))) |
b405f39b5493
(x-frob-font-slant): Properly handle a match against
Richard M. Stallman <rms@gnu.org>
parents:
14409
diff
changeset
|
2283 ((string-match x-font-regexp-slant font) |
13704
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2284 (concat (substring font 0 (match-beginning 1)) which |
3dcaddea344a
Wrap case-fold-search for x-frob-font-weight and x-frob-font-slant.
Simon Marshall <simon@gnu.org>
parents:
13609
diff
changeset
|
2285 (substring font (match-end 1))))))) |
29354
4ed4a700358b
Update calls to make-obsolete with a WHEN argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28907
diff
changeset
|
2286 (make-obsolete 'x-frob-font-slant 'make-face-... "21.1") |
25012 | 2287 |
40351
a44d4a7dd8de
(internal-get-face): Use facep instead of the obsolete
Eli Zaretskii <eliz@gnu.org>
parents:
39830
diff
changeset
|
2288 ;; These aliases are here so that we don't get warnings about obsolete |
a44d4a7dd8de
(internal-get-face): Use facep instead of the obsolete
Eli Zaretskii <eliz@gnu.org>
parents:
39830
diff
changeset
|
2289 ;; functions from the byte compiler. |
a44d4a7dd8de
(internal-get-face): Use facep instead of the obsolete
Eli Zaretskii <eliz@gnu.org>
parents:
39830
diff
changeset
|
2290 (defalias 'internal-frob-font-weight 'x-frob-font-weight) |
a44d4a7dd8de
(internal-get-face): Use facep instead of the obsolete
Eli Zaretskii <eliz@gnu.org>
parents:
39830
diff
changeset
|
2291 (defalias 'internal-frob-font-slant 'x-frob-font-slant) |
a44d4a7dd8de
(internal-get-face): Use facep instead of the obsolete
Eli Zaretskii <eliz@gnu.org>
parents:
39830
diff
changeset
|
2292 |
2456 | 2293 (defun x-make-font-bold (font) |
4439
e7ab04f23df5
Make boldness and italicness affect subsequently created frames.
Richard M. Stallman <rms@gnu.org>
parents:
4122
diff
changeset
|
2294 "Given an X font specification, make a bold version of it. |
e7ab04f23df5
Make boldness and italicness affect subsequently created frames.
Richard M. Stallman <rms@gnu.org>
parents:
4122
diff
changeset
|
2295 If that can't be done, return nil." |
40351
a44d4a7dd8de
(internal-get-face): Use facep instead of the obsolete
Eli Zaretskii <eliz@gnu.org>
parents:
39830
diff
changeset
|
2296 (internal-frob-font-weight font "bold")) |
29354
4ed4a700358b
Update calls to make-obsolete with a WHEN argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28907
diff
changeset
|
2297 (make-obsolete 'x-make-font-bold 'make-face-bold "21.1") |
25012 | 2298 |
2456 | 2299 (defun x-make-font-demibold (font) |
4439
e7ab04f23df5
Make boldness and italicness affect subsequently created frames.
Richard M. Stallman <rms@gnu.org>
parents:
4122
diff
changeset
|
2300 "Given an X font specification, make a demibold version of it. |
e7ab04f23df5
Make boldness and italicness affect subsequently created frames.
Richard M. Stallman <rms@gnu.org>
parents:
4122
diff
changeset
|
2301 If that can't be done, return nil." |
40351
a44d4a7dd8de
(internal-get-face): Use facep instead of the obsolete
Eli Zaretskii <eliz@gnu.org>
parents:
39830
diff
changeset
|
2302 (internal-frob-font-weight font "demibold")) |
29354
4ed4a700358b
Update calls to make-obsolete with a WHEN argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28907
diff
changeset
|
2303 (make-obsolete 'x-make-font-demibold 'make-face-bold "21.1") |
25012 | 2304 |
2456 | 2305 (defun x-make-font-unbold (font) |
4439
e7ab04f23df5
Make boldness and italicness affect subsequently created frames.
Richard M. Stallman <rms@gnu.org>
parents:
4122
diff
changeset
|
2306 "Given an X font specification, make a non-bold version of it. |
e7ab04f23df5
Make boldness and italicness affect subsequently created frames.
Richard M. Stallman <rms@gnu.org>
parents:
4122
diff
changeset
|
2307 If that can't be done, return nil." |
40351
a44d4a7dd8de
(internal-get-face): Use facep instead of the obsolete
Eli Zaretskii <eliz@gnu.org>
parents:
39830
diff
changeset
|
2308 (internal-frob-font-weight font "medium")) |
29354
4ed4a700358b
Update calls to make-obsolete with a WHEN argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28907
diff
changeset
|
2309 (make-obsolete 'x-make-font-unbold 'make-face-unbold "21.1") |
25012 | 2310 |
2456 | 2311 (defun x-make-font-italic (font) |
4439
e7ab04f23df5
Make boldness and italicness affect subsequently created frames.
Richard M. Stallman <rms@gnu.org>
parents:
4122
diff
changeset
|
2312 "Given an X font specification, make an italic version of it. |
e7ab04f23df5
Make boldness and italicness affect subsequently created frames.
Richard M. Stallman <rms@gnu.org>
parents:
4122
diff
changeset
|
2313 If that can't be done, return nil." |
40351
a44d4a7dd8de
(internal-get-face): Use facep instead of the obsolete
Eli Zaretskii <eliz@gnu.org>
parents:
39830
diff
changeset
|
2314 (internal-frob-font-slant font "i")) |
29354
4ed4a700358b
Update calls to make-obsolete with a WHEN argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28907
diff
changeset
|
2315 (make-obsolete 'x-make-font-italic 'make-face-italic "21.1") |
25012 | 2316 |
2456 | 2317 (defun x-make-font-oblique (font) ; you say tomayto... |
4439
e7ab04f23df5
Make boldness and italicness affect subsequently created frames.
Richard M. Stallman <rms@gnu.org>
parents:
4122
diff
changeset
|
2318 "Given an X font specification, make an oblique version of it. |
e7ab04f23df5
Make boldness and italicness affect subsequently created frames.
Richard M. Stallman <rms@gnu.org>
parents:
4122
diff
changeset
|
2319 If that can't be done, return nil." |
40351
a44d4a7dd8de
(internal-get-face): Use facep instead of the obsolete
Eli Zaretskii <eliz@gnu.org>
parents:
39830
diff
changeset
|
2320 (internal-frob-font-slant font "o")) |
29354
4ed4a700358b
Update calls to make-obsolete with a WHEN argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28907
diff
changeset
|
2321 (make-obsolete 'x-make-font-oblique 'make-face-italic "21.1") |
25012 | 2322 |
2456 | 2323 (defun x-make-font-unitalic (font) |
4439
e7ab04f23df5
Make boldness and italicness affect subsequently created frames.
Richard M. Stallman <rms@gnu.org>
parents:
4122
diff
changeset
|
2324 "Given an X font specification, make a non-italic version of it. |
e7ab04f23df5
Make boldness and italicness affect subsequently created frames.
Richard M. Stallman <rms@gnu.org>
parents:
4122
diff
changeset
|
2325 If that can't be done, return nil." |
40351
a44d4a7dd8de
(internal-get-face): Use facep instead of the obsolete
Eli Zaretskii <eliz@gnu.org>
parents:
39830
diff
changeset
|
2326 (internal-frob-font-slant font "r")) |
29354
4ed4a700358b
Update calls to make-obsolete with a WHEN argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28907
diff
changeset
|
2327 (make-obsolete 'x-make-font-unitalic 'make-face-unitalic "21.1") |
25012 | 2328 |
17752
2687f3d7c191
(x-make-font-bold-italic): New function.
Kenichi Handa <handa@m17n.org>
parents:
17560
diff
changeset
|
2329 (defun x-make-font-bold-italic (font) |
2687f3d7c191
(x-make-font-bold-italic): New function.
Kenichi Handa <handa@m17n.org>
parents:
17560
diff
changeset
|
2330 "Given an X font specification, make a bold and italic version of it. |
2687f3d7c191
(x-make-font-bold-italic): New function.
Kenichi Handa <handa@m17n.org>
parents:
17560
diff
changeset
|
2331 If that can't be done, return nil." |
40351
a44d4a7dd8de
(internal-get-face): Use facep instead of the obsolete
Eli Zaretskii <eliz@gnu.org>
parents:
39830
diff
changeset
|
2332 (and (setq font (internal-frob-font-weight font "bold")) |
a44d4a7dd8de
(internal-get-face): Use facep instead of the obsolete
Eli Zaretskii <eliz@gnu.org>
parents:
39830
diff
changeset
|
2333 (internal-frob-font-slant font "i"))) |
29354
4ed4a700358b
Update calls to make-obsolete with a WHEN argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28907
diff
changeset
|
2334 (make-obsolete 'x-make-font-bold-italic 'make-face-bold-italic "21.1") |
2456 | 2335 |
2715
9caee9338229
* faces.el: Call internal-set-face-1, not internat-set-face-1.
Jim Blandy <jimb@redhat.com>
parents:
2714
diff
changeset
|
2336 (provide 'faces) |
9caee9338229
* faces.el: Call internal-set-face-1, not internat-set-face-1.
Jim Blandy <jimb@redhat.com>
parents:
2714
diff
changeset
|
2337 |
63382
9cbfa983c1cf
(read-face-name): Use complete-in-turn complete non-aliases
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
63311
diff
changeset
|
2338 ;; arch-tag: 19a4759f-2963-445f-b004-425b9aadd7d6 |
28840 | 2339 ;;; faces.el ends here |