Mercurial > emacs
annotate lisp/facemenu.el @ 98182:19ec1646fe6c
The Rmail/mbox merge has been abandoned in favor of a restart using
the current rmail.el file. A comprehensive list of changes will be
supplied when pmail.el is morphed back into rmail.el
The current status is that pmail.el supports basic Rmail navigation
(no summary support) and shows the current message in a special
buffer using buffer-swap-text. No decoding is done yet. That is the
next step.
author | Paul Reilly <pmr@pajato.com> |
---|---|
date | Mon, 15 Sep 2008 20:56:53 +0000 |
parents | d45acf0c8d23 |
children | d42aff5ca541 |
rev | line source |
---|---|
13337 | 1 ;;; facemenu.el --- create a face menu for interactively adding fonts to text |
14169 | 2 |
64762
41bb365f41c4
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64211
diff
changeset
|
3 ;; Copyright (C) 1994, 1995, 1996, 2001, 2002, 2003, 2004, |
79721 | 4 ;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. |
8743 | 5 |
25278 | 6 ;; Author: Boris Goldowsky <boris@gnu.org> |
8743 | 7 ;; Keywords: faces |
8 | |
9 ;; This file is part of GNU Emacs. | |
10 | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94149
diff
changeset
|
11 ;; GNU Emacs is free software: you can redistribute it and/or modify |
8743 | 12 ;; it under the terms of the GNU General Public License as published by |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94149
diff
changeset
|
13 ;; the Free Software Foundation, either version 3 of the License, or |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94149
diff
changeset
|
14 ;; (at your option) any later version. |
8743 | 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 | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94149
diff
changeset
|
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
8743 | 23 |
24 ;;; Commentary: | |
14169 | 25 |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
26 ;; This file defines a menu of faces (bold, italic, etc) which allows you to |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
27 ;; set the face used for a region of the buffer. Some faces also have |
43902
e0e6df854822
(facemenu-add-new-face):
Richard M. Stallman <rms@gnu.org>
parents:
43412
diff
changeset
|
28 ;; keybindings, which are shown in the menu. |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
29 ;; |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
30 ;; The menu also contains submenus for indentation and justification-changing |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
31 ;; commands. |
8743 | 32 |
33 ;;; Usage: | |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
34 ;; Selecting a face from the menu or typing the keyboard equivalent will |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
35 ;; change the region to use that face. If you use transient-mark-mode and the |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
36 ;; region is not active, the face will be remembered and used for the next |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
37 ;; insertion. It will be forgotten if you move point or make other |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
38 ;; modifications before inserting or typing anything. |
8743 | 39 ;; |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
40 ;; Faces can be selected from the keyboard as well. |
60466
53053dc21ae7
(global-map): Bind M-o, not M-g.
Richard M. Stallman <rms@gnu.org>
parents:
59484
diff
changeset
|
41 ;; The standard keybindings are M-o (or ESC o) + letter: |
53053dc21ae7
(global-map): Bind M-o, not M-g.
Richard M. Stallman <rms@gnu.org>
parents:
59484
diff
changeset
|
42 ;; M-o i = "set italic", M-o b = "set bold", etc. |
8743 | 43 |
44 ;;; Customization: | |
45 ;; An alternative set of keybindings that may be easier to type can be set up | |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
46 ;; using "Alt" or "Hyper" keys. This requires that you either have or create |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
47 ;; an Alt or Hyper key on your keyboard. On my keyboard, there is a key |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
48 ;; labeled "Alt", but to make it act as an Alt key I have to put this command |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
49 ;; into my .xinitrc: |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
50 ;; xmodmap -e "add Mod3 = Alt_L" |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
51 ;; Or, I can make it into a Hyper key with this: |
8743 | 52 ;; xmodmap -e "keysym Alt_L = Hyper_L" -e "add Mod2 = Hyper_L" |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
53 ;; Check with local X-perts for how to do it on your system. |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
54 ;; Then you can define your keybindings with code like this in your .emacs: |
8743 | 55 ;; (setq facemenu-keybindings |
56 ;; '((default . [?\H-d]) | |
57 ;; (bold . [?\H-b]) | |
58 ;; (italic . [?\H-i]) | |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
59 ;; (bold-italic . [?\H-l]) |
8743 | 60 ;; (underline . [?\H-u]))) |
17505
c2640d101ca9
(facemenu-update): Don't make global bindings here.
Richard M. Stallman <rms@gnu.org>
parents:
17073
diff
changeset
|
61 ;; (facemenu-update) |
8743 | 62 ;; (setq facemenu-keymap global-map) |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
63 ;; (define-key global-map [?\H-c] 'facemenu-set-foreground) ; set fg color |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
64 ;; (define-key global-map [?\H-C] 'facemenu-set-background) ; set bg color |
8743 | 65 ;; |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
66 ;; The order of the faces that appear in the menu and their keybindings can be |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
67 ;; controlled by setting the variables `facemenu-keybindings' and |
71568
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
68 ;; `facemenu-new-faces-at-end'. List faces that you want to use in documents |
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
69 ;; in `facemenu-listed-faces'. |
8743 | 70 |
71 ;;; Known Problems: | |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
72 ;; Bold and Italic do not combine to create bold-italic if you select them |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
73 ;; both, although most other combinations (eg bold + underline + some color) |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
74 ;; do the intuitive thing. |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
75 ;; |
8743 | 76 ;; There is at present no way to display what the faces look like in |
77 ;; the menu itself. | |
78 ;; | |
79 ;; `list-faces-display' shows the faces in a different order than | |
80 ;; this menu, which could be confusing. I do /not/ sort the list | |
81 ;; alphabetically, because I like the default order: it puts the most | |
82 ;; basic, common fonts first. | |
83 ;; | |
84 ;; Please send me any other problems, comments or ideas. | |
85 | |
86 ;;; Code: | |
87 | |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
88 (eval-when-compile |
43295
ce2590f06ba0
2002-02-14 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
42948
diff
changeset
|
89 (require 'help) |
ce2590f06ba0
2002-02-14 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
42948
diff
changeset
|
90 (require 'button)) |
ce2590f06ba0
2002-02-14 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
42948
diff
changeset
|
91 |
17505
c2640d101ca9
(facemenu-update): Don't make global bindings here.
Richard M. Stallman <rms@gnu.org>
parents:
17073
diff
changeset
|
92 ;; Global bindings: |
c2640d101ca9
(facemenu-update): Don't make global bindings here.
Richard M. Stallman <rms@gnu.org>
parents:
17073
diff
changeset
|
93 (define-key global-map [C-down-mouse-2] 'facemenu-menu) |
60466
53053dc21ae7
(global-map): Bind M-o, not M-g.
Richard M. Stallman <rms@gnu.org>
parents:
59484
diff
changeset
|
94 (define-key global-map "\M-o" 'facemenu-keymap) |
8743 | 95 |
19009 | 96 (defgroup facemenu nil |
64011
ca0386c4cfd5
(facemenu): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents:
63897
diff
changeset
|
97 "Create a face menu for interactively adding fonts to text." |
19009 | 98 :group 'faces |
99 :prefix "facemenu-") | |
100 | |
101 (defcustom facemenu-keybindings | |
8743 | 102 '((default . "d") |
103 (bold . "b") | |
104 (italic . "i") | |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
105 (bold-italic . "l") ; {bold} intersect {italic} = {l} |
8743 | 106 (underline . "u")) |
41799 | 107 "Alist of interesting faces and keybindings. |
8743 | 108 Each element is itself a list: the car is the name of the face, |
109 the next element is the key to use as a keyboard equivalent of the menu item; | |
17505
c2640d101ca9
(facemenu-update): Don't make global bindings here.
Richard M. Stallman <rms@gnu.org>
parents:
17073
diff
changeset
|
110 the binding is made in `facemenu-keymap'. |
8743 | 111 |
112 The faces specifically mentioned in this list are put at the top of | |
71568
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
113 the menu, in the order specified. All other faces which are defined |
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
114 in `facemenu-listed-faces' are listed after them, but get no |
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
115 keyboard equivalents. |
8743 | 116 |
117 If you change this variable after loading facemenu.el, you will need to call | |
19009 | 118 `facemenu-update' to make it take effect." |
119 :type '(repeat (cons face string)) | |
120 :group 'facemenu) | |
8743 | 121 |
19009 | 122 (defcustom facemenu-new-faces-at-end t |
17505
c2640d101ca9
(facemenu-update): Don't make global bindings here.
Richard M. Stallman <rms@gnu.org>
parents:
17073
diff
changeset
|
123 "*Where in the menu to insert newly-created faces. |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
124 This should be nil to put them at the top of the menu, or t to put them |
19009 | 125 just before \"Other\" at the end." |
126 :type 'boolean | |
127 :group 'facemenu) | |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
128 |
74422
a756f7ecaf2e
(facemenu-unlisted-faces): Define as obsolete variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
74281
diff
changeset
|
129 (defvar facemenu-unlisted-faces |
a756f7ecaf2e
(facemenu-unlisted-faces): Define as obsolete variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
74281
diff
changeset
|
130 `(modeline region secondary-selection highlight scratch-face |
a756f7ecaf2e
(facemenu-unlisted-faces): Define as obsolete variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
74281
diff
changeset
|
131 ,(purecopy "^font-lock-") ,(purecopy "^gnus-") ,(purecopy "^message-") |
a756f7ecaf2e
(facemenu-unlisted-faces): Define as obsolete variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
74281
diff
changeset
|
132 ,(purecopy "^ediff-") ,(purecopy "^term-") ,(purecopy "^vc-") |
a756f7ecaf2e
(facemenu-unlisted-faces): Define as obsolete variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
74281
diff
changeset
|
133 ,(purecopy "^widget-") ,(purecopy "^custom-") ,(purecopy "^vm-")) |
74423
fb9de3443cda
(facemenu-unlisted-faces): Put obsolescence info in the call to
Juanma Barranquero <lekktu@gmail.com>
parents:
74422
diff
changeset
|
134 "*List of faces that are of no interest to the user.") |
fb9de3443cda
(facemenu-unlisted-faces): Put obsolescence info in the call to
Juanma Barranquero <lekktu@gmail.com>
parents:
74422
diff
changeset
|
135 (make-obsolete-variable 'facemenu-unlisted-faces 'facemenu-listed-faces |
94149
17500cca17c4
(facemenu-unlisted-faces): Fix obsolescence description.
Juanma Barranquero <lekktu@gmail.com>
parents:
93975
diff
changeset
|
136 "22.1,\n and has no effect on the Face menu") |
74422
a756f7ecaf2e
(facemenu-unlisted-faces): Define as obsolete variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
74281
diff
changeset
|
137 |
71568
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
138 (defcustom facemenu-listed-faces nil |
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
139 "*List of faces to include in the Face menu. |
72338
1bac8eb0facf
(facemenu-listed-faces): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
72335
diff
changeset
|
140 Each element should be a symbol, the name of a face. |
71568
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
141 The \"basic \" faces in `facemenu-keybindings' are automatically |
72338
1bac8eb0facf
(facemenu-listed-faces): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
72335
diff
changeset
|
142 added to the Face menu, and need not be in this list. |
19558
56079fac4d24
(facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents:
19009
diff
changeset
|
143 |
72338
1bac8eb0facf
(facemenu-listed-faces): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
72335
diff
changeset
|
144 This value takes effect when you load facemenu.el. If the |
1bac8eb0facf
(facemenu-listed-faces): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
72335
diff
changeset
|
145 list includes symbols which are not defined as faces, they |
1bac8eb0facf
(facemenu-listed-faces): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
72335
diff
changeset
|
146 are ignored; however, subsequently defining or creating |
1bac8eb0facf
(facemenu-listed-faces): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
72335
diff
changeset
|
147 those faces adds them to the menu then. You can call |
1bac8eb0facf
(facemenu-listed-faces): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
72335
diff
changeset
|
148 `facemenu-update' to recalculate the menu contents, such as |
1bac8eb0facf
(facemenu-listed-faces): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
72335
diff
changeset
|
149 if you change the value of this variable, |
8743 | 150 |
72338
1bac8eb0facf
(facemenu-listed-faces): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
72335
diff
changeset
|
151 If this variable is t, all faces that you apply to text |
1bac8eb0facf
(facemenu-listed-faces): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
72335
diff
changeset
|
152 using the face menu commands (even by name), and all faces |
1bac8eb0facf
(facemenu-listed-faces): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
72335
diff
changeset
|
153 that you define or create, are added to the menu. You may |
1bac8eb0facf
(facemenu-listed-faces): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
72335
diff
changeset
|
154 find it useful to set this variable to t temporarily while |
1bac8eb0facf
(facemenu-listed-faces): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
72335
diff
changeset
|
155 you define some faces, so that they will be added. However, |
1bac8eb0facf
(facemenu-listed-faces): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
72335
diff
changeset
|
156 if the value is no longer t and you call `facemenu-update', |
1bac8eb0facf
(facemenu-listed-faces): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
72335
diff
changeset
|
157 it will remove any faces not explicitly in the list." |
71568
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
158 :type '(choice (const :tag "List all faces" t) |
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
159 (const :tag "None" nil) |
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
160 (repeat symbol)) |
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
161 :group 'facemenu |
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
162 :version "22.1") |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
163 |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
164 (defvar facemenu-face-menu |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
165 (let ((map (make-sparse-keymap "Face"))) |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
166 (define-key map "o" (cons "Other..." 'facemenu-set-face)) |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
167 map) |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
168 "Menu keymap for faces.") |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
169 (defalias 'facemenu-face-menu facemenu-face-menu) |
63769
cae70b5066ae
(facemenu-enable-faces-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
60522
diff
changeset
|
170 (put 'facemenu-face-menu 'menu-enable '(facemenu-enable-faces-p)) |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
171 |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
172 (defvar facemenu-foreground-menu |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
173 (let ((map (make-sparse-keymap "Foreground Color"))) |
12014
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
174 (define-key map "o" (cons "Other..." 'facemenu-set-foreground)) |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
175 map) |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
176 "Menu keymap for foreground colors.") |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
177 (defalias 'facemenu-foreground-menu facemenu-foreground-menu) |
63769
cae70b5066ae
(facemenu-enable-faces-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
60522
diff
changeset
|
178 (put 'facemenu-foreground-menu 'menu-enable '(facemenu-enable-faces-p)) |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
179 |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
180 (defvar facemenu-background-menu |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
181 (let ((map (make-sparse-keymap "Background Color"))) |
12014
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
182 (define-key map "o" (cons "Other..." 'facemenu-set-background)) |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
183 map) |
30092
6d383cf4bb99
Docstrings fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29050
diff
changeset
|
184 "Menu keymap for background colors.") |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
185 (defalias 'facemenu-background-menu facemenu-background-menu) |
63769
cae70b5066ae
(facemenu-enable-faces-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
60522
diff
changeset
|
186 (put 'facemenu-background-menu 'menu-enable '(facemenu-enable-faces-p)) |
cae70b5066ae
(facemenu-enable-faces-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
60522
diff
changeset
|
187 |
cae70b5066ae
(facemenu-enable-faces-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
60522
diff
changeset
|
188 ;;; Condition for enabling menu items that set faces. |
cae70b5066ae
(facemenu-enable-faces-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
60522
diff
changeset
|
189 (defun facemenu-enable-faces-p () |
cae70b5066ae
(facemenu-enable-faces-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
60522
diff
changeset
|
190 (not (and font-lock-mode font-lock-defaults))) |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
191 |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
192 (defvar facemenu-special-menu |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
193 (let ((map (make-sparse-keymap "Special"))) |
27494 | 194 (define-key map [?s] (cons (purecopy "Remove Special") |
195 'facemenu-remove-special)) | |
196 (define-key map [?t] (cons (purecopy "Intangible") | |
197 'facemenu-set-intangible)) | |
198 (define-key map [?v] (cons (purecopy "Invisible") | |
199 'facemenu-set-invisible)) | |
200 (define-key map [?r] (cons (purecopy "Read-Only") | |
201 'facemenu-set-read-only)) | |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
202 map) |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
203 "Menu keymap for non-face text-properties.") |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
204 (defalias 'facemenu-special-menu facemenu-special-menu) |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
205 |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
206 (defvar facemenu-justification-menu |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
207 (let ((map (make-sparse-keymap "Justification"))) |
27494 | 208 (define-key map [?c] (cons (purecopy "Center") 'set-justification-center)) |
209 (define-key map [?b] (cons (purecopy "Full") 'set-justification-full)) | |
210 (define-key map [?r] (cons (purecopy "Right") 'set-justification-right)) | |
211 (define-key map [?l] (cons (purecopy "Left") 'set-justification-left)) | |
212 (define-key map [?u] (cons (purecopy "Unfilled") 'set-justification-none)) | |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
213 map) |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
214 "Submenu for text justification commands.") |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
215 (defalias 'facemenu-justification-menu facemenu-justification-menu) |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
216 |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
217 (defvar facemenu-indentation-menu |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
218 (let ((map (make-sparse-keymap "Indentation"))) |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
219 (define-key map [decrease-right-margin] |
27494 | 220 (cons (purecopy "Indent Right Less") 'decrease-right-margin)) |
12014
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
221 (define-key map [increase-right-margin] |
27494 | 222 (cons (purecopy "Indent Right More") 'increase-right-margin)) |
12014
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
223 (define-key map [decrease-left-margin] |
27494 | 224 (cons (purecopy "Indent Less") 'decrease-left-margin)) |
12014
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
225 (define-key map [increase-left-margin] |
27494 | 226 (cons (purecopy "Indent More") 'increase-left-margin)) |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
227 map) |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
228 "Submenu for indentation commands.") |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
229 (defalias 'facemenu-indentation-menu facemenu-indentation-menu) |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
230 |
12014
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
231 ;; This is split up to avoid an overlong line in loaddefs.el. |
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
232 (defvar facemenu-menu nil |
9874
2bf88bd23cbb
(facemenu-update): Use C-down-mouse-2 for the menu.
Richard M. Stallman <rms@gnu.org>
parents:
9623
diff
changeset
|
233 "Facemenu top-level menu keymap.") |
12014
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
234 (setq facemenu-menu (make-sparse-keymap "Text Properties")) |
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
235 (let ((map facemenu-menu)) |
27494 | 236 (define-key map [dc] (cons (purecopy "Display Colors") 'list-colors-display)) |
237 (define-key map [df] (cons (purecopy "Display Faces") 'list-faces-display)) | |
45869
fb2ae7bd271d
(facemenu-map): Rename to Describe Text
Richard M. Stallman <rms@gnu.org>
parents:
45207
diff
changeset
|
238 (define-key map [dp] (cons (purecopy "Describe Properties") |
fb2ae7bd271d
(facemenu-map): Rename to Describe Text
Richard M. Stallman <rms@gnu.org>
parents:
45207
diff
changeset
|
239 'describe-text-properties)) |
27494 | 240 (define-key map [ra] (cons (purecopy "Remove Text Properties") |
241 'facemenu-remove-all)) | |
242 (define-key map [rm] (cons (purecopy "Remove Face Properties") | |
243 'facemenu-remove-face-props)) | |
244 (define-key map [s1] (list (purecopy "--")))) | |
12014
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
245 (let ((map facemenu-menu)) |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
246 (define-key map [in] (cons (purecopy "Indentation") |
27494 | 247 'facemenu-indentation-menu)) |
248 (define-key map [ju] (cons (purecopy "Justification") | |
249 'facemenu-justification-menu)) | |
250 (define-key map [s2] (list (purecopy "--"))) | |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
251 (define-key map [sp] (cons (purecopy "Special Properties") |
27494 | 252 'facemenu-special-menu)) |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
253 (define-key map [bg] (cons (purecopy "Background Color") |
27494 | 254 'facemenu-background-menu)) |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
255 (define-key map [fg] (cons (purecopy "Foreground Color") |
27494 | 256 'facemenu-foreground-menu)) |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
257 (define-key map [fc] (cons (purecopy "Face") |
27494 | 258 'facemenu-face-menu))) |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
259 (defalias 'facemenu-menu facemenu-menu) |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
260 |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
261 (defvar facemenu-keymap |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
262 (let ((map (make-sparse-keymap "Set face"))) |
27494 | 263 (define-key map "o" (cons (purecopy "Other...") 'facemenu-set-face)) |
92939
f0b6eb7a4cc3
* font-lock.el (featurep): Remove test, not useful anymore.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87649
diff
changeset
|
264 (define-key map "\M-o" 'font-lock-fontify-block) |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
265 map) |
11091
c968d4c026b7
Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents:
11081
diff
changeset
|
266 "Keymap for face-changing commands. |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
267 `Facemenu-update' fills in the keymap according to the bindings |
9874
2bf88bd23cbb
(facemenu-update): Use C-down-mouse-2 for the menu.
Richard M. Stallman <rms@gnu.org>
parents:
9623
diff
changeset
|
268 requested in `facemenu-keybindings'.") |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
269 (defalias 'facemenu-keymap facemenu-keymap) |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
270 |
13923
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
271 |
19009 | 272 (defcustom facemenu-add-face-function nil |
30092
6d383cf4bb99
Docstrings fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29050
diff
changeset
|
273 "Function called at beginning of text to change or nil. |
13923
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
274 This function is passed the FACE to set and END of text to change, and must |
19009 | 275 return a string which is inserted. It may set `facemenu-end-add-face'." |
276 :type '(choice (const :tag "None" nil) | |
277 function) | |
278 :group 'facemenu) | |
13923
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
279 |
19009 | 280 (defcustom facemenu-end-add-face nil |
30092
6d383cf4bb99
Docstrings fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29050
diff
changeset
|
281 "String to insert or function called at end of text to change or nil. |
13923
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
282 This function is passed the FACE to set, and must return a string which is |
19009 | 283 inserted." |
284 :type '(choice (const :tag "None" nil) | |
285 string | |
286 function) | |
287 :group 'facemenu) | |
13923
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
288 |
19009 | 289 (defcustom facemenu-remove-face-function nil |
17505
c2640d101ca9
(facemenu-update): Don't make global bindings here.
Richard M. Stallman <rms@gnu.org>
parents:
17073
diff
changeset
|
290 "When non-nil, this is a function called to remove faces. |
13923
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
291 This function is passed the START and END of text to change. |
30092
6d383cf4bb99
Docstrings fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29050
diff
changeset
|
292 May also be t meaning to use `facemenu-add-face-function'." |
19009 | 293 :type '(choice (const :tag "None" nil) |
294 (const :tag "Use add-face" t) | |
295 function) | |
296 :group 'facemenu) | |
13923
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
297 |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
298 ;;; Internal Variables |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
299 |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
300 (defvar facemenu-color-alist nil |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
301 "Alist of colors, used for completion. |
71369
71f07d141fe2
(facemenu-color-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
68651
diff
changeset
|
302 If this is nil, then the value of (defined-colors) is used.") |
9494
9a4ed505445e
(facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents:
8953
diff
changeset
|
303 |
8743 | 304 (defun facemenu-update () |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
305 "Add or update the \"Face\" menu in the menu bar. |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
306 You can call this to update things if you change any of the menu configuration |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
307 variables." |
8743 | 308 (interactive) |
9494
9a4ed505445e
(facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents:
8953
diff
changeset
|
309 |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
310 ;; Add each defined face to the menu. |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
311 (facemenu-iterate 'facemenu-add-new-face |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
312 (facemenu-complete-face-list facemenu-keybindings))) |
9494
9a4ed505445e
(facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents:
8953
diff
changeset
|
313 |
8743 | 314 (defun facemenu-set-face (face &optional start end) |
72335
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
315 "Apply FACE to the region or next character typed. |
9494
9a4ed505445e
(facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents:
8953
diff
changeset
|
316 |
72335
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
317 If the region is active (normally true except in Transient |
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
318 Mark mode) and nonempty, and there is no prefix argument, |
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
319 this command applies FACE to the region. Otherwise, it applies FACE |
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
320 to the faces to use for the next character |
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
321 inserted. (Moving point or switching buffers before typing |
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
322 a character to insert cancels the specification.) |
12014
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
323 |
72335
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
324 If FACE is `default', to \"apply\" it means clearing |
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
325 the list of faces to be used. For any other value of FACE, |
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
326 to \"apply\" it means putting FACE at the front of the list |
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
327 of faces to be used, and removing any faces further |
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
328 along in the list that would be completely overridden by |
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
329 preceding faces (including FACE). |
12014
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
330 |
72335
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
331 This command can also add FACE to the menu of faces, |
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
332 if `facemenu-listed-faces' says to do that." |
40275
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
333 (interactive (list (progn |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
334 (barf-if-buffer-read-only) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
335 (read-face-name "Use face")) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
336 (if (and mark-active (not current-prefix-arg)) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
337 (region-beginning)) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
338 (if (and mark-active (not current-prefix-arg)) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
339 (region-end)))) |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
340 (facemenu-add-new-face face) |
40275
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
341 (facemenu-add-face face start end)) |
9494
9a4ed505445e
(facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents:
8953
diff
changeset
|
342 |
9a4ed505445e
(facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents:
8953
diff
changeset
|
343 (defun facemenu-set-foreground (color &optional start end) |
30092
6d383cf4bb99
Docstrings fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29050
diff
changeset
|
344 "Set the foreground COLOR of the region or next character typed. |
43902
e0e6df854822
(facemenu-add-new-face):
Richard M. Stallman <rms@gnu.org>
parents:
43412
diff
changeset
|
345 This command reads the color in the minibuffer. |
40275
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
346 |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
347 If the region is active (normally true except in Transient Mark mode) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
348 and there is no prefix argument, this command sets the region to the |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
349 requested face. |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
350 |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
351 Otherwise, this command specifies the face for the next character |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
352 inserted. Moving point or switching buffers before |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
353 typing a character to insert cancels the specification." |
40275
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
354 (interactive (list (progn |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
355 (barf-if-buffer-read-only) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
356 (facemenu-read-color "Foreground color: ")) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
357 (if (and mark-active (not current-prefix-arg)) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
358 (region-beginning)) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
359 (if (and mark-active (not current-prefix-arg)) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
360 (region-end)))) |
63897
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
361 (facemenu-set-face-from-menu |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
362 (facemenu-add-new-color color 'facemenu-foreground-menu) |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
363 start end)) |
9494
9a4ed505445e
(facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents:
8953
diff
changeset
|
364 |
9a4ed505445e
(facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents:
8953
diff
changeset
|
365 (defun facemenu-set-background (color &optional start end) |
30092
6d383cf4bb99
Docstrings fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29050
diff
changeset
|
366 "Set the background COLOR of the region or next character typed. |
43902
e0e6df854822
(facemenu-add-new-face):
Richard M. Stallman <rms@gnu.org>
parents:
43412
diff
changeset
|
367 This command reads the color in the minibuffer. |
40275
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
368 |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
369 If the region is active (normally true except in Transient Mark mode) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
370 and there is no prefix argument, this command sets the region to the |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
371 requested face. |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
372 |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
373 Otherwise, this command specifies the face for the next character |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
374 inserted. Moving point or switching buffers before |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
375 typing a character to insert cancels the specification." |
40275
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
376 (interactive (list (progn |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
377 (barf-if-buffer-read-only) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
378 (facemenu-read-color "Background color: ")) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
379 (if (and mark-active (not current-prefix-arg)) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
380 (region-beginning)) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
381 (if (and mark-active (not current-prefix-arg)) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
382 (region-end)))) |
63897
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
383 (facemenu-set-face-from-menu |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
384 (facemenu-add-new-color color 'facemenu-background-menu) |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
385 start end)) |
8743 | 386 |
387 (defun facemenu-set-face-from-menu (face start end) | |
30092
6d383cf4bb99
Docstrings fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29050
diff
changeset
|
388 "Set the FACE of the region or next character typed. |
63897
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
389 This function is designed to be called from a menu; FACE is determined |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
390 using the event type of the menu entry. If FACE is a symbol whose |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
391 name starts with \"fg:\" or \"bg:\", then this functions sets the |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
392 foreground or background to the color specified by the rest of the |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
393 symbol's name. Any other symbol is considered the name of a face. |
12014
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
394 |
40275
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
395 If the region is active (normally true except in Transient Mark mode) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
396 and there is no prefix argument, this command sets the region to the |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
397 requested face. |
12014
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
398 |
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
399 Otherwise, this command specifies the face for the next character |
63897
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
400 inserted. Moving point or switching buffers before typing a character |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
401 to insert cancels the specification." |
9494
9a4ed505445e
(facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents:
8953
diff
changeset
|
402 (interactive (list last-command-event |
12014
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
403 (if (and mark-active (not current-prefix-arg)) |
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
404 (region-beginning)) |
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
405 (if (and mark-active (not current-prefix-arg)) |
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
406 (region-end)))) |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
407 (barf-if-buffer-read-only) |
63897
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
408 (facemenu-add-face |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
409 (let ((fn (symbol-name face))) |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
410 (if (string-match "\\`\\([fb]\\)g:\\(.+\\)" fn) |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
411 (list (list (if (string= (match-string 1 fn) "f") |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
412 :foreground |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
413 :background) |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
414 (match-string 2 fn))) |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
415 face)) |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
416 start end)) |
8743 | 417 |
418 (defun facemenu-set-invisible (start end) | |
419 "Make the region invisible. | |
420 This sets the `invisible' text property; it can be undone with | |
12014
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
421 `facemenu-remove-special'." |
8743 | 422 (interactive "r") |
17073
5e66b1087c94
Change put-text-property with constant args to add-text-properties for efficiency. Suggested by Stavros Macrakis <s.macrakis@opengroup.org>
Boris Goldowsky <boris@gnu.org>
parents:
16590
diff
changeset
|
423 (add-text-properties start end '(invisible t))) |
8743 | 424 |
425 (defun facemenu-set-intangible (start end) | |
426 "Make the region intangible: disallow moving into it. | |
427 This sets the `intangible' text property; it can be undone with | |
12014
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
428 `facemenu-remove-special'." |
8743 | 429 (interactive "r") |
17073
5e66b1087c94
Change put-text-property with constant args to add-text-properties for efficiency. Suggested by Stavros Macrakis <s.macrakis@opengroup.org>
Boris Goldowsky <boris@gnu.org>
parents:
16590
diff
changeset
|
430 (add-text-properties start end '(intangible t))) |
8743 | 431 |
432 (defun facemenu-set-read-only (start end) | |
433 "Make the region unmodifiable. | |
434 This sets the `read-only' text property; it can be undone with | |
12014
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
435 `facemenu-remove-special'." |
8743 | 436 (interactive "r") |
17073
5e66b1087c94
Change put-text-property with constant args to add-text-properties for efficiency. Suggested by Stavros Macrakis <s.macrakis@opengroup.org>
Boris Goldowsky <boris@gnu.org>
parents:
16590
diff
changeset
|
437 (add-text-properties start end '(read-only t))) |
8743 | 438 |
20443
76ea51acad22
(facemenu-remove-face-props): Renamed from
Karl Heuer <kwzh@gnu.org>
parents:
19686
diff
changeset
|
439 (defun facemenu-remove-face-props (start end) |
76ea51acad22
(facemenu-remove-face-props): Renamed from
Karl Heuer <kwzh@gnu.org>
parents:
19686
diff
changeset
|
440 "Remove `face' and `mouse-face' text properties." |
8743 | 441 (interactive "*r") ; error if buffer is read-only despite the next line. |
442 (let ((inhibit-read-only t)) | |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
443 (remove-text-properties |
20443
76ea51acad22
(facemenu-remove-face-props): Renamed from
Karl Heuer <kwzh@gnu.org>
parents:
19686
diff
changeset
|
444 start end '(face nil mouse-face nil)))) |
8743 | 445 |
12014
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
446 (defun facemenu-remove-all (start end) |
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
447 "Remove all text properties from the region." |
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
448 (interactive "*r") ; error if buffer is read-only despite the next line. |
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
449 (let ((inhibit-read-only t)) |
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
450 (set-text-properties start end nil))) |
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
451 |
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
452 (defun facemenu-remove-special (start end) |
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
453 "Remove all the \"special\" text properties from the region. |
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
454 These special properties include `invisible', `intangible' and `read-only'." |
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
455 (interactive "*r") ; error if buffer is read-only despite the next line. |
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
456 (let ((inhibit-read-only t)) |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
457 (remove-text-properties |
12014
e4932082046a
(facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents:
11830
diff
changeset
|
458 start end '(invisible nil intangible nil read-only nil)))) |
44678
dec3101535fc
(list-text-properties-at): Command deleted.
Richard M. Stallman <rms@gnu.org>
parents:
44660
diff
changeset
|
459 |
11372
874b91f4adc4
(facemenu-read-color): Don't ignore PROMPT arg. Make arg optional.
Boris Goldowsky <boris@gnu.org>
parents:
11234
diff
changeset
|
460 (defun facemenu-read-color (&optional prompt) |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
461 "Read a color using the minibuffer." |
64211
11c1d62f46ae
(facemenu-read-color): Do case-insensitive matching.
Richard M. Stallman <rms@gnu.org>
parents:
64091
diff
changeset
|
462 (let* ((completion-ignore-case t) |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
94678
diff
changeset
|
463 (require-match (not (eq window-system 'ns))) |
64211
11c1d62f46ae
(facemenu-read-color): Do case-insensitive matching.
Richard M. Stallman <rms@gnu.org>
parents:
64091
diff
changeset
|
464 (col (completing-read (or prompt "Color: ") |
11c1d62f46ae
(facemenu-read-color): Do case-insensitive matching.
Richard M. Stallman <rms@gnu.org>
parents:
64091
diff
changeset
|
465 (or facemenu-color-alist |
11c1d62f46ae
(facemenu-read-color): Do case-insensitive matching.
Richard M. Stallman <rms@gnu.org>
parents:
64091
diff
changeset
|
466 (defined-colors)) |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
94678
diff
changeset
|
467 nil require-match))) |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
468 (if (equal "" col) |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
469 nil |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
470 col))) |
8743 | 471 |
59482
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
472 (defun list-colors-display (&optional list buffer-name) |
11465
9fa2f8b87890
(list-colors-display): Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents:
11372
diff
changeset
|
473 "Display names of defined colors, and show what they look like. |
9fa2f8b87890
(list-colors-display): Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents:
11372
diff
changeset
|
474 If the optional argument LIST is non-nil, it should be a list of |
59482
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
475 colors to display. Otherwise, this command computes a list of |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
476 colors that the current display can handle. If the optional |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
477 argument BUFFER-NAME is nil, it defaults to *Colors*." |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
478 (interactive) |
42948
74d5b26ad460
(list-colors-display): If the argument is nil, don't
Eli Zaretskii <eliz@gnu.org>
parents:
42488
diff
changeset
|
479 (when (and (null list) (> (display-color-cells) 0)) |
59482
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
480 (setq list (list-colors-duplicates (defined-colors))) |
45207
a8c6bd4220a5
(list-colors-display): Don't use `display-color-cells' unless the
Miles Bader <miles@gnu.org>
parents:
45021
diff
changeset
|
481 (when (memq (display-visual-class) '(gray-scale pseudo-color direct-color)) |
a8c6bd4220a5
(list-colors-display): Don't use `display-color-cells' unless the
Miles Bader <miles@gnu.org>
parents:
45021
diff
changeset
|
482 ;; Don't show more than what the display can handle. |
a8c6bd4220a5
(list-colors-display): Don't use `display-color-cells' unless the
Miles Bader <miles@gnu.org>
parents:
45021
diff
changeset
|
483 (let ((lc (nthcdr (1- (display-color-cells)) list))) |
a8c6bd4220a5
(list-colors-display): Don't use `display-color-cells' unless the
Miles Bader <miles@gnu.org>
parents:
45021
diff
changeset
|
484 (if lc |
a8c6bd4220a5
(list-colors-display): Don't use `display-color-cells' unless the
Miles Bader <miles@gnu.org>
parents:
45021
diff
changeset
|
485 (setcdr lc nil))))) |
86011
474f44ceee97
(list-colors-display): Use with-help-window instead of with-output-to-temp-buffer.
Martin Rudalics <rudalics@gmx.at>
parents:
78236
diff
changeset
|
486 (with-help-window (or buffer-name "*Colors*") |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
487 (save-excursion |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
488 (set-buffer standard-output) |
59482
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
489 (setq truncate-lines t) |
59484
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
490 (if temp-buffer-show-function |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
491 (list-colors-print list) |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
492 ;; Call list-colors-print from temp-buffer-show-hook |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
493 ;; to get the right value of window-width in list-colors-print |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
494 ;; after the buffer is displayed. |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
495 (add-hook 'temp-buffer-show-hook |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
496 (lambda () (list-colors-print list)) nil t))))) |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
497 |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
498 (defun list-colors-print (list) |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
499 (dolist (color list) |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
500 (if (consp color) |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
501 (if (cdr color) |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
502 (setq color (sort color (lambda (a b) |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
503 (string< (downcase a) |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
504 (downcase b)))))) |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
505 (setq color (list color))) |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
506 (put-text-property |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
507 (prog1 (point) |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
508 (insert (car color)) |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
509 (indent-to 22)) |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
510 (point) |
79648
f6d3ee769dcf
(list-colors-print): Use :background and :foreground
Richard M. Stallman <rms@gnu.org>
parents:
78236
diff
changeset
|
511 'face (list ':background (car color))) |
59484
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
512 (put-text-property |
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
513 (prog1 (point) |
60522
66456f4ae924
(list-colors-print): Print #RRGGBB in default face.
Juri Linkov <juri@jurta.org>
parents:
60466
diff
changeset
|
514 (insert " " (if (cdr color) |
66456f4ae924
(list-colors-print): Print #RRGGBB in default face.
Juri Linkov <juri@jurta.org>
parents:
60466
diff
changeset
|
515 (mapconcat 'identity (cdr color) ", ") |
66456f4ae924
(list-colors-print): Print #RRGGBB in default face.
Juri Linkov <juri@jurta.org>
parents:
60466
diff
changeset
|
516 (car color)))) |
66456f4ae924
(list-colors-print): Print #RRGGBB in default face.
Juri Linkov <juri@jurta.org>
parents:
60466
diff
changeset
|
517 (point) |
79648
f6d3ee769dcf
(list-colors-print): Use :background and :foreground
Richard M. Stallman <rms@gnu.org>
parents:
78236
diff
changeset
|
518 'face (list ':foreground (car color))) |
60522
66456f4ae924
(list-colors-print): Print #RRGGBB in default face.
Juri Linkov <juri@jurta.org>
parents:
60466
diff
changeset
|
519 (indent-to (max (- (window-width) 8) 44)) |
66456f4ae924
(list-colors-print): Print #RRGGBB in default face.
Juri Linkov <juri@jurta.org>
parents:
60466
diff
changeset
|
520 (insert (apply 'format "#%02x%02x%02x" |
66456f4ae924
(list-colors-print): Print #RRGGBB in default face.
Juri Linkov <juri@jurta.org>
parents:
60466
diff
changeset
|
521 (mapcar (lambda (c) (lsh c -8)) |
66456f4ae924
(list-colors-print): Print #RRGGBB in default face.
Juri Linkov <juri@jurta.org>
parents:
60466
diff
changeset
|
522 (color-values (car color))))) |
59484
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
523 |
60522
66456f4ae924
(list-colors-print): Print #RRGGBB in default face.
Juri Linkov <juri@jurta.org>
parents:
60466
diff
changeset
|
524 (insert "\n")) |
59484
c6ded43591fd
* facemenu.el (list-colors-print): New function created from code
Juri Linkov <juri@jurta.org>
parents:
59482
diff
changeset
|
525 (goto-char (point-min))) |
59482
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
526 |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
527 (defun list-colors-duplicates (&optional list) |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
528 "Return a list of colors with grouped duplicate colors. |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
529 If a color has no duplicates, then the element of the returned list |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
530 has the form '(COLOR-NAME). The element of the returned list with |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
531 duplicate colors has the form '(COLOR-NAME DUPLICATE-COLOR-NAME ...). |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
532 This function uses the predicate `facemenu-color-equal' to compare |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
533 color names. If the optional argument LIST is non-nil, it should |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
534 be a list of colors to display. Otherwise, this function uses |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
535 a list of colors that the current display can handle." |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
536 (let* ((list (mapcar 'list (or list (defined-colors)))) |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
537 (l list)) |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
538 (while (cdr l) |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
539 (if (and (facemenu-color-equal (car (car l)) (car (car (cdr l)))) |
60522
66456f4ae924
(list-colors-print): Print #RRGGBB in default face.
Juri Linkov <juri@jurta.org>
parents:
60466
diff
changeset
|
540 (not (if (boundp 'w32-default-color-map) |
66456f4ae924
(list-colors-print): Print #RRGGBB in default face.
Juri Linkov <juri@jurta.org>
parents:
60466
diff
changeset
|
541 (not (assoc (car (car l)) w32-default-color-map))))) |
59482
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
542 (progn |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
543 (setcdr (car l) (cons (car (car (cdr l))) (cdr (car l)))) |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
544 (setcdr l (cdr (cdr l)))) |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
545 (setq l (cdr l)))) |
6b794a66a256
(list-colors-display): Add new arg buffer-name.
Juri Linkov <juri@jurta.org>
parents:
56936
diff
changeset
|
546 list)) |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
547 |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
548 (defun facemenu-color-equal (a b) |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
549 "Return t if colors A and B are the same color. |
11465
9fa2f8b87890
(list-colors-display): Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents:
11372
diff
changeset
|
550 A and B should be strings naming colors. |
26736
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
25278
diff
changeset
|
551 This function queries the display system to find out what the color |
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
25278
diff
changeset
|
552 names mean. It returns nil if the colors differ or if it can't |
11465
9fa2f8b87890
(list-colors-display): Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents:
11372
diff
changeset
|
553 determine the correct answer." |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
554 (cond ((equal a b) t) |
26736
a0674327c167
Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents:
25278
diff
changeset
|
555 ((equal (color-values a) (color-values b))))) |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
556 |
13923
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
557 (defun facemenu-add-face (face &optional start end) |
9494
9a4ed505445e
(facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents:
8953
diff
changeset
|
558 "Add FACE to text between START and END. |
30092
6d383cf4bb99
Docstrings fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29050
diff
changeset
|
559 If START is nil or START to END is empty, add FACE to next typed character |
13923
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
560 instead. For each section of that region that has a different face property, |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
561 FACE will be consed onto it, and other faces that are completely hidden by |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
562 that will be removed from the list. |
43902
e0e6df854822
(facemenu-add-new-face):
Richard M. Stallman <rms@gnu.org>
parents:
43412
diff
changeset
|
563 If `facemenu-add-face-function' and maybe `facemenu-end-add-face' are non-nil, |
13923
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
564 they are used to set the face information. |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
565 |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
566 As a special case, if FACE is `default', then the region is left with NO face |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
567 text property. Otherwise, selecting the default face would not have any |
13923
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
568 effect. See `facemenu-remove-face-function'." |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
569 (interactive "*xFace: \nr") |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
570 (if (and (eq face 'default) |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
571 (not (eq facemenu-remove-face-function t))) |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
572 (if facemenu-remove-face-function |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
573 (funcall facemenu-remove-face-function start end) |
14154
e16dc69d909a
(facemenu-add-face): Adding default to no region
Richard M. Stallman <rms@gnu.org>
parents:
13923
diff
changeset
|
574 (if (and start (< start end)) |
e16dc69d909a
(facemenu-add-face): Adding default to no region
Richard M. Stallman <rms@gnu.org>
parents:
13923
diff
changeset
|
575 (remove-text-properties start end '(face default)) |
e16dc69d909a
(facemenu-add-face): Adding default to no region
Richard M. Stallman <rms@gnu.org>
parents:
13923
diff
changeset
|
576 (setq self-insert-face 'default |
e16dc69d909a
(facemenu-add-face): Adding default to no region
Richard M. Stallman <rms@gnu.org>
parents:
13923
diff
changeset
|
577 self-insert-face-command this-command))) |
13923
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
578 (if facemenu-add-face-function |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
579 (save-excursion |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
580 (if end (goto-char end)) |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
581 (save-excursion |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
582 (if start (goto-char start)) |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
583 (insert-before-markers |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
584 (funcall facemenu-add-face-function face end))) |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
585 (if facemenu-end-add-face |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
586 (insert (if (stringp facemenu-end-add-face) |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
587 facemenu-end-add-face |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
588 (funcall facemenu-end-add-face face))))) |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
589 (if (and start (< start end)) |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
590 (let ((part-start start) part-end) |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
591 (while (not (= part-start end)) |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
592 (setq part-end (next-single-property-change part-start 'face |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
593 nil end)) |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
594 (let ((prev (get-text-property part-start 'face))) |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
595 (put-text-property part-start part-end 'face |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
596 (if (null prev) |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
597 face |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
598 (facemenu-active-faces |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
599 (cons face |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
600 (if (listp prev) |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
601 prev |
72335
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
602 (list prev))) |
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
603 ;; Specify the selected frame |
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
604 ;; because nil would mean to use |
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
605 ;; the new-frame default settings, |
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
606 ;; and those are usually nil. |
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
607 (selected-frame))))) |
13923
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
608 (setq part-start part-end))) |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
609 (setq self-insert-face (if (eq last-command self-insert-face-command) |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
610 (cons face (if (listp self-insert-face) |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
611 self-insert-face |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
612 (list self-insert-face))) |
35e379a3952e
(facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents:
13495
diff
changeset
|
613 face) |
63814
db398a23f0d0
(facemenu-add-face): Warn when font-lock is active.
Richard M. Stallman <rms@gnu.org>
parents:
63792
diff
changeset
|
614 self-insert-face-command this-command)))) |
db398a23f0d0
(facemenu-add-face): Warn when font-lock is active.
Richard M. Stallman <rms@gnu.org>
parents:
63792
diff
changeset
|
615 (unless (facemenu-enable-faces-p) |
db398a23f0d0
(facemenu-add-face): Warn when font-lock is active.
Richard M. Stallman <rms@gnu.org>
parents:
63792
diff
changeset
|
616 (message "Font-lock mode will override any faces you set in this buffer"))) |
9494
9a4ed505445e
(facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents:
8953
diff
changeset
|
617 |
13495
fcfb5f397b49
(facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents:
13433
diff
changeset
|
618 (defun facemenu-active-faces (face-list &optional frame) |
fcfb5f397b49
(facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents:
13433
diff
changeset
|
619 "Return from FACE-LIST those faces that would be used for display. |
fcfb5f397b49
(facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents:
13433
diff
changeset
|
620 This means each face attribute is not specified in a face earlier in FACE-LIST |
fcfb5f397b49
(facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents:
13433
diff
changeset
|
621 and such a face is therefore active when used to display text. |
fcfb5f397b49
(facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents:
13433
diff
changeset
|
622 If the optional argument FRAME is given, use the faces in that frame; otherwise |
fcfb5f397b49
(facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents:
13433
diff
changeset
|
623 use the selected frame. If t, then the global, non-frame faces are used." |
40275
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
624 (let* ((mask-atts (copy-sequence |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
625 (if (consp (car face-list)) |
42488
cbf9d3debb0a
(facemenu-active-faces):
Richard M. Stallman <rms@gnu.org>
parents:
41799
diff
changeset
|
626 (face-attributes-as-vector (car face-list)) |
40275
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
627 (or (internal-lisp-face-p (car face-list) frame) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
628 (check-face (car face-list)))))) |
13495
fcfb5f397b49
(facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents:
13433
diff
changeset
|
629 (active-list (list (car face-list))) |
fcfb5f397b49
(facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents:
13433
diff
changeset
|
630 (face-list (cdr face-list)) |
fcfb5f397b49
(facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents:
13433
diff
changeset
|
631 (mask-len (length mask-atts))) |
fcfb5f397b49
(facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents:
13433
diff
changeset
|
632 (while face-list |
40275
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
633 (if (let ((face-atts |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
634 (if (consp (car face-list)) |
42488
cbf9d3debb0a
(facemenu-active-faces):
Richard M. Stallman <rms@gnu.org>
parents:
41799
diff
changeset
|
635 (face-attributes-as-vector (car face-list)) |
40275
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
636 (or (internal-lisp-face-p (car face-list) frame) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
637 (check-face (car face-list))))) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
638 (i mask-len) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
639 (useful nil)) |
56936
6257efe5587a
(facemenu-active-faces): Change condition of inner `while' loop to
Luc Teirlinck <teirllm@auburn.edu>
parents:
55705
diff
changeset
|
640 (while (>= (setq i (1- i)) 0) |
40275
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
641 (and (not (memq (aref face-atts i) '(nil unspecified))) |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
642 (memq (aref mask-atts i) '(nil unspecified)) |
13495
fcfb5f397b49
(facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents:
13433
diff
changeset
|
643 (aset mask-atts i (setq useful t)))) |
fcfb5f397b49
(facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents:
13433
diff
changeset
|
644 useful) |
fcfb5f397b49
(facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents:
13433
diff
changeset
|
645 (setq active-list (cons (car face-list) active-list))) |
fcfb5f397b49
(facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents:
13433
diff
changeset
|
646 (setq face-list (cdr face-list))) |
fcfb5f397b49
(facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents:
13433
diff
changeset
|
647 (nreverse active-list))) |
9494
9a4ed505445e
(facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents:
8953
diff
changeset
|
648 |
44611
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
649 (defun facemenu-add-new-face (face) |
72335
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
650 "Add FACE (a face) to the Face menu if `facemenu-listed-faces' says so. |
d6694b6039c1
(facemenu-add-face): Pass frame to facemenu-active-faces.
Richard M. Stallman <rms@gnu.org>
parents:
71568
diff
changeset
|
651 This is called whenever you create a new face, and at other times." |
40275
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
652 (let* (name |
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
653 symbol |
44611
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
654 menu docstring |
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
655 (key (cdr (assoc face facemenu-keybindings))) |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
656 function menu-val) |
44611
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
657 (if (symbolp face) |
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
658 (setq name (symbol-name face) |
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
659 symbol face) |
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
660 (setq name face |
40280
e14f2ec78074
(facemenu-add-new-face): Fix variable names.
Miles Bader <miles@gnu.org>
parents:
40275
diff
changeset
|
661 symbol (intern name))) |
44611
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
662 (setq menu 'facemenu-face-menu) |
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
663 (setq docstring |
74281
0c96941203c0
(facemenu-add-new-face): Improve doc strings of constructed commands.
Richard M. Stallman <rms@gnu.org>
parents:
73412
diff
changeset
|
664 (format "Select face `%s' for subsequent insertion. |
0c96941203c0
(facemenu-add-new-face): Improve doc strings of constructed commands.
Richard M. Stallman <rms@gnu.org>
parents:
73412
diff
changeset
|
665 If the mark is active and there is no prefix argument, |
0c96941203c0
(facemenu-add-new-face): Improve doc strings of constructed commands.
Richard M. Stallman <rms@gnu.org>
parents:
73412
diff
changeset
|
666 apply face `%s' to the region instead. |
0c96941203c0
(facemenu-add-new-face): Improve doc strings of constructed commands.
Richard M. Stallman <rms@gnu.org>
parents:
73412
diff
changeset
|
667 This command was defined by `facemenu-add-new-face'." |
0c96941203c0
(facemenu-add-new-face): Improve doc strings of constructed commands.
Richard M. Stallman <rms@gnu.org>
parents:
73412
diff
changeset
|
668 name name)) |
71568
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
669 (cond ((facemenu-iterate ; check if equivalent face is already in the menu |
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
670 (lambda (m) (and (listp m) |
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
671 (symbolp (car m)) |
73412
fb5c7e2b2689
(facemenu-add-new-face): Defend against symbol that isn't a face name.
Richard M. Stallman <rms@gnu.org>
parents:
72338
diff
changeset
|
672 ;; Avoid error in face-equal |
fb5c7e2b2689
(facemenu-add-new-face): Defend against symbol that isn't a face name.
Richard M. Stallman <rms@gnu.org>
parents:
72338
diff
changeset
|
673 ;; when a non-face is erroneously present. |
fb5c7e2b2689
(facemenu-add-new-face): Defend against symbol that isn't a face name.
Richard M. Stallman <rms@gnu.org>
parents:
72338
diff
changeset
|
674 (facep (car m)) |
71568
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
675 (face-equal (car m) symbol))) |
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
676 (cdr (symbol-function menu)))) |
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
677 ;; Faces with a keyboard equivalent. These go at the front. |
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
678 (key |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
679 (setq function (intern (concat "facemenu-set-" name))) |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
680 (fset function |
17555
6e2928cff18e
(facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents:
17505
diff
changeset
|
681 `(lambda () |
6e2928cff18e
(facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents:
17505
diff
changeset
|
682 ,docstring |
6e2928cff18e
(facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents:
17505
diff
changeset
|
683 (interactive) |
43902
e0e6df854822
(facemenu-add-new-face):
Richard M. Stallman <rms@gnu.org>
parents:
43412
diff
changeset
|
684 (facemenu-set-face |
e0e6df854822
(facemenu-add-new-face):
Richard M. Stallman <rms@gnu.org>
parents:
43412
diff
changeset
|
685 (quote ,symbol) |
e0e6df854822
(facemenu-add-new-face):
Richard M. Stallman <rms@gnu.org>
parents:
43412
diff
changeset
|
686 (if (and mark-active (not current-prefix-arg)) |
e0e6df854822
(facemenu-add-new-face):
Richard M. Stallman <rms@gnu.org>
parents:
43412
diff
changeset
|
687 (region-beginning)) |
e0e6df854822
(facemenu-add-new-face):
Richard M. Stallman <rms@gnu.org>
parents:
43412
diff
changeset
|
688 (if (and mark-active (not current-prefix-arg)) |
e0e6df854822
(facemenu-add-new-face):
Richard M. Stallman <rms@gnu.org>
parents:
43412
diff
changeset
|
689 (region-end))))) |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
690 (define-key 'facemenu-keymap key (cons name function)) |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
691 (define-key menu key (cons name function))) |
71568
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
692 ;; Faces with no keyboard equivalent. Figure out where to put it: |
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
693 ((or (eq t facemenu-listed-faces) |
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
694 (memq symbol facemenu-listed-faces)) |
40275
113233ecd44a
(facemenu-unlisted-faces): Improve doc strings
Richard M. Stallman <rms@gnu.org>
parents:
35633
diff
changeset
|
695 (setq key (vector symbol) |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
696 function 'facemenu-set-face-from-menu |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
697 menu-val (symbol-function menu)) |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
698 (if (and facemenu-new-faces-at-end |
71568
8d6af1c1c365
* facemenu.el (facemenu-listed-faces): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
71369
diff
changeset
|
699 (> (length menu-val) 3)) |
10520
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
700 (define-key-after menu-val key (cons name function) |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
701 (car (nth (- (length menu-val) 3) menu-val))) |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
702 (define-key menu key (cons name function)))))) |
3d30caa4b459
(facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents:
10238
diff
changeset
|
703 nil) ; Return nil for facemenu-iterate |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
704 |
63792
8e5d2e4fa77a
(facemenu-unlisted-faces): Add foreground and background color faces.
Lute Kamstra <lute@gnu.org>
parents:
63769
diff
changeset
|
705 (defun facemenu-add-new-color (color menu) |
44611
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
706 "Add COLOR (a color name string) to the appropriate Face menu. |
63792
8e5d2e4fa77a
(facemenu-unlisted-faces): Add foreground and background color faces.
Lute Kamstra <lute@gnu.org>
parents:
63769
diff
changeset
|
707 MENU should be `facemenu-foreground-menu' or `facemenu-background-menu'. |
63897
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
708 Return the event type (a symbol) of the added menu entry. |
44611
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
709 |
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
710 This is called whenever you use a new color." |
63792
8e5d2e4fa77a
(facemenu-unlisted-faces): Add foreground and background color faces.
Lute Kamstra <lute@gnu.org>
parents:
63769
diff
changeset
|
711 (let (symbol docstring) |
8e5d2e4fa77a
(facemenu-unlisted-faces): Add foreground and background color faces.
Lute Kamstra <lute@gnu.org>
parents:
63769
diff
changeset
|
712 (unless (color-defined-p color) |
8e5d2e4fa77a
(facemenu-unlisted-faces): Add foreground and background color faces.
Lute Kamstra <lute@gnu.org>
parents:
63769
diff
changeset
|
713 (error "Color `%s' undefined" color)) |
44611
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
714 (cond ((eq menu 'facemenu-foreground-menu) |
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
715 (setq docstring |
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
716 (format "Select foreground color %s for subsequent insertion." |
63792
8e5d2e4fa77a
(facemenu-unlisted-faces): Add foreground and background color faces.
Lute Kamstra <lute@gnu.org>
parents:
63769
diff
changeset
|
717 color) |
63897
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
718 symbol (intern (concat "fg:" color)))) |
44611
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
719 ((eq menu 'facemenu-background-menu) |
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
720 (setq docstring |
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
721 (format "Select background color %s for subsequent insertion." |
63792
8e5d2e4fa77a
(facemenu-unlisted-faces): Add foreground and background color faces.
Lute Kamstra <lute@gnu.org>
parents:
63769
diff
changeset
|
722 color) |
63897
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
723 symbol (intern (concat "bg:" color)))) |
63792
8e5d2e4fa77a
(facemenu-unlisted-faces): Add foreground and background color faces.
Lute Kamstra <lute@gnu.org>
parents:
63769
diff
changeset
|
724 (t (error "MENU should be `facemenu-foreground-menu' or `facemenu-background-menu'"))) |
63897
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
725 (unless (facemenu-iterate ; Check if color is already in the menu. |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
726 (lambda (m) (and (listp m) |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
727 (eq (car m) symbol))) |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
728 (cdr (symbol-function menu))) |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
729 ;; Color is not in the menu. Figure out where to put it. |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
730 (let ((key (vector symbol)) |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
731 (function 'facemenu-set-face-from-menu) |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
732 (menu-val (symbol-function menu))) |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
733 (if (and facemenu-new-faces-at-end |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
734 (> (length menu-val) 3)) |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
735 (define-key-after menu-val key (cons color function) |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
736 (car (nth (- (length menu-val) 3) menu-val))) |
f8e70842f12b
(facemenu-unlisted-faces): Delete foreground and background color
Lute Kamstra <lute@gnu.org>
parents:
63814
diff
changeset
|
737 (define-key menu key (cons color function))))) |
63792
8e5d2e4fa77a
(facemenu-unlisted-faces): Add foreground and background color faces.
Lute Kamstra <lute@gnu.org>
parents:
63769
diff
changeset
|
738 symbol)) |
44611
e4a2909015d3
(facemenu-add-new-face): Use this only for faces. Delete arg MENU.
Richard M. Stallman <rms@gnu.org>
parents:
44593
diff
changeset
|
739 |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
740 (defun facemenu-complete-face-list (&optional oldlist) |
15358
91b8056dcd35
(facemenu-complete-face-list): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
14901
diff
changeset
|
741 "Return list of all faces that look different. |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
742 Starts with given ALIST of faces, and adds elements only if they display |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
743 differently from any face already on the list. |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
744 The faces on ALIST will end up at the end of the returned list, in reverse |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
745 order." |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
746 (let ((list (nreverse (mapcar 'car oldlist)))) |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
747 (facemenu-iterate |
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46248
diff
changeset
|
748 (lambda (new-face) |
9623
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
749 (if (not (memq new-face list)) |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
750 (setq list (cons new-face list))) |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
751 nil) |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
752 (nreverse (face-list))) |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
753 list)) |
fe1c170fa35a
(facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents:
9494
diff
changeset
|
754 |
30092
6d383cf4bb99
Docstrings fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29050
diff
changeset
|
755 (defun facemenu-iterate (func list) |
8743 | 756 "Apply FUNC to each element of LIST until one returns non-nil. |
757 Returns the non-nil value it found, or nil if all were nil." | |
30092
6d383cf4bb99
Docstrings fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29050
diff
changeset
|
758 (while (and list (not (funcall func (car list)))) |
6d383cf4bb99
Docstrings fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29050
diff
changeset
|
759 (setq list (cdr list))) |
6d383cf4bb99
Docstrings fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29050
diff
changeset
|
760 (car list)) |
8743 | 761 |
762 (facemenu-update) | |
763 | |
46248
345d4d775bf0
Move `provide' to the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45869
diff
changeset
|
764 (provide 'facemenu) |
52401 | 765 |
93975
1e3a407766b9
Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92948
diff
changeset
|
766 ;; arch-tag: 85f6d02b-9085-420e-b651-0678f0e9c7eb |
8743 | 767 ;;; facemenu.el ends here |