annotate lisp/facemenu.el @ 29343:d34547dec008

*** empty log message ***
author Dave Love <fx@gnu.org>
date Wed, 31 May 2000 21:17:57 +0000
parents e3cbe0ccf8c9
children 6d383cf4bb99
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13337
84acc3adcd63 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 12269
diff changeset
1 ;;; facemenu.el --- create a face menu for interactively adding fonts to text
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14154
diff changeset
2
14154
e16dc69d909a (facemenu-add-face): Adding default to no region
Richard M. Stallman <rms@gnu.org>
parents: 13923
diff changeset
3 ;; Copyright (c) 1994, 1995, 1996 Free Software Foundation, Inc.
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
25278
cbe304a26771 Fix maintainer address.
Karl Heuer <kwzh@gnu.org>
parents: 25141
diff changeset
5 ;; Author: Boris Goldowsky <boris@gnu.org>
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 ;; Keywords: faces
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; any later version.
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; GNU General Public License for more details.
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14154
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14154
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14154
diff changeset
23 ;; Boston, MA 02111-1307, USA.
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 ;;; Commentary:
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14154
diff changeset
26
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
27 ;; 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
28 ;; set the face used for a region of the buffer. Some faces also have
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
29 ;; keybindings, which are shown in the menu. Faces with names beginning with
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
30 ;; "fg:" or "bg:", as in "fg:red", are treated specially.
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
31 ;; Such faces are assumed to consist only of a foreground (if "fg:") or
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
32 ;; background (if "bg:") color. They are thus put into the color submenus
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
33 ;; rather than the general Face submenu. These faces can also be
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
34 ;; automatically created by selecting the "Other..." menu items in the
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
35 ;; "Foreground" and "Background" submenus.
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
36 ;;
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
37 ;; 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
38 ;; commands.
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 ;;; Usage:
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
41 ;; 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
42 ;; 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
43 ;; 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
44 ;; 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
45 ;; modifications before inserting or typing anything.
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 ;;
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 ;; Faces can be selected from the keyboard as well.
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
48 ;; The standard keybindings are M-g (or ESC g) + letter:
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
49 ;; M-g i = "set italic", M-g b = "set bold", etc.
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 ;;; Customization:
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 ;; 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
53 ;; 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
54 ;; 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
55 ;; 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
56 ;; into my .xinitrc:
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
57 ;; xmodmap -e "add Mod3 = Alt_L"
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
58 ;; Or, I can make it into a Hyper key with this:
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 ;; 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
60 ;; 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
61 ;; Then you can define your keybindings with code like this in your .emacs:
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 ;; (setq facemenu-keybindings
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 ;; '((default . [?\H-d])
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 ;; (bold . [?\H-b])
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 ;; (italic . [?\H-i])
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
66 ;; (bold-italic . [?\H-l])
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 ;; (underline . [?\H-u])))
17505
c2640d101ca9 (facemenu-update): Don't make global bindings here.
Richard M. Stallman <rms@gnu.org>
parents: 17073
diff changeset
68 ;; (facemenu-update)
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 ;; (setq facemenu-keymap global-map)
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
70 ;; (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
71 ;; (define-key global-map [?\H-C] 'facemenu-set-background) ; set bg color
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 ;;
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
73 ;; 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
74 ;; controlled by setting the variables `facemenu-keybindings' and
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
75 ;; `facemenu-new-faces-at-end'. List faces that you don't use in documents
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
76 ;; (eg, `region') in `facemenu-unlisted-faces'.
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 ;;; Known Problems:
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
79 ;; 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
80 ;; 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
81 ;; do the intuitive thing.
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
82 ;;
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 ;; There is at present no way to display what the faces look like in
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 ;; the menu itself.
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 ;;
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 ;; `list-faces-display' shows the faces in a different order than
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 ;; this menu, which could be confusing. I do /not/ sort the list
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 ;; alphabetically, because I like the default order: it puts the most
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 ;; basic, common fonts first.
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 ;;
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 ;; Please send me any other problems, comments or ideas.
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 ;;; Code:
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 (provide 'facemenu)
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
97 ;;; Provide some binding for startup:
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
98 ;;;###autoload (define-key global-map "\M-g" 'facemenu-keymap)
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
99 ;;;###autoload (autoload 'facemenu-keymap "facemenu" "Keymap for face-changing commands." t 'keymap)
17505
c2640d101ca9 (facemenu-update): Don't make global bindings here.
Richard M. Stallman <rms@gnu.org>
parents: 17073
diff changeset
100
c2640d101ca9 (facemenu-update): Don't make global bindings here.
Richard M. Stallman <rms@gnu.org>
parents: 17073
diff changeset
101 ;; Global bindings:
c2640d101ca9 (facemenu-update): Don't make global bindings here.
Richard M. Stallman <rms@gnu.org>
parents: 17073
diff changeset
102 (define-key global-map [C-down-mouse-2] 'facemenu-menu)
c2640d101ca9 (facemenu-update): Don't make global bindings here.
Richard M. Stallman <rms@gnu.org>
parents: 17073
diff changeset
103 (define-key global-map "\M-g" 'facemenu-keymap)
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104
19009
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
105 (defgroup facemenu nil
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
106 "Create a face menu for interactively adding fonts to text"
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
107 :group 'faces
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
108 :prefix "facemenu-")
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
109
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
110 (defcustom facemenu-keybindings
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 '((default . "d")
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 (bold . "b")
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 (italic . "i")
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
114 (bold-italic . "l") ; {bold} intersect {italic} = {l}
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 (underline . "u"))
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 "Alist of interesting faces and keybindings.
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 Each element is itself a list: the car is the name of the face,
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 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
119 the binding is made in `facemenu-keymap'.
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121 The faces specifically mentioned in this list are put at the top of
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122 the menu, in the order specified. All other faces which are defined,
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 except for those in `facemenu-unlisted-faces', are listed after them,
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124 but get no keyboard equivalents.
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 If you change this variable after loading facemenu.el, you will need to call
19009
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
127 `facemenu-update' to make it take effect."
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
128 :type '(repeat (cons face string))
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
129 :group 'facemenu)
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130
19009
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
131 (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
132 "*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
133 This should be nil to put them at the top of the menu, or t to put them
19009
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
134 just before \"Other\" at the end."
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
135 :type 'boolean
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
136 :group 'facemenu)
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
137
19009
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
138 (defcustom facemenu-unlisted-faces
19558
56079fac4d24 (facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents: 19009
diff changeset
139 '(modeline region secondary-selection highlight scratch-face
27494
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
140 (purecopy "^font-lock-") (purecopy "^gnus-") (purecopy "^message-")
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
141 (purecopy "^ediff-") (purecopy "^term-") (purecopy "^vc-")
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
142 (purecopy "^widget-") (purecopy "^custom-") (purecopy "^vm-"))
17505
c2640d101ca9 (facemenu-update): Don't make global bindings here.
Richard M. Stallman <rms@gnu.org>
parents: 17073
diff changeset
143 "*List of faces not to include in the Face menu.
19558
56079fac4d24 (facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents: 19009
diff changeset
144 Each element may be either a symbol, which is the name of a face, or a string,
56079fac4d24 (facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents: 19009
diff changeset
145 which is a regular expression to be matched against face names. Matching
56079fac4d24 (facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents: 19009
diff changeset
146 faces will not be added to the menu.
56079fac4d24 (facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents: 19009
diff changeset
147
13495
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
148 You can set this list before loading facemenu.el, or add a face to it before
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
149 creating that face if you do not want it to be listed. If you change the
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
150 variable so as to eliminate faces that have already been added to the menu,
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
151 call `facemenu-update' to recalculate the menu contents.
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
153 If this variable is t, no faces will be added to the menu. This is useful for
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
154 temporarily turning off the feature that automatically adds faces to the menu
19009
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
155 when they are created."
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
156 :type '(choice (const :tag "Don't add" t)
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
157 (const :tag "None" nil)
19558
56079fac4d24 (facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents: 19009
diff changeset
158 (repeat (choice symbol regexp)))
19009
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
159 :group 'facemenu)
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
160
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
161 ;;;###autoload
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
162 (defvar facemenu-face-menu
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
163 (let ((map (make-sparse-keymap "Face")))
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
164 (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
165 map)
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
166 "Menu keymap for faces.")
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
167 ;;;###autoload
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
168 (defalias 'facemenu-face-menu facemenu-face-menu)
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
169
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
170 ;;;###autoload
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
171 (defvar facemenu-foreground-menu
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
172 (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
173 (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
174 map)
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
175 "Menu keymap for foreground colors.")
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
176 ;;;###autoload
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)
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
178
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
179 ;;;###autoload
9623
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)
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
184 "Menu keymap for background colors")
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
185 ;;;###autoload
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
186 (defalias 'facemenu-background-menu facemenu-background-menu)
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
187
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
188 ;;;###autoload
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
189 (defvar facemenu-special-menu
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
190 (let ((map (make-sparse-keymap "Special")))
27494
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
191 (define-key map [?s] (cons (purecopy "Remove Special")
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
192 'facemenu-remove-special))
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
193 (define-key map [?t] (cons (purecopy "Intangible")
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
194 'facemenu-set-intangible))
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
195 (define-key map [?v] (cons (purecopy "Invisible")
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
196 'facemenu-set-invisible))
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
197 (define-key map [?r] (cons (purecopy "Read-Only")
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
198 'facemenu-set-read-only))
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
199 map)
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
200 "Menu keymap for non-face text-properties.")
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
201 ;;;###autoload
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
202 (defalias 'facemenu-special-menu facemenu-special-menu)
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
203
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
204 ;;;###autoload
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
205 (defvar facemenu-justification-menu
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
206 (let ((map (make-sparse-keymap "Justification")))
27494
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
207 (define-key map [?c] (cons (purecopy "Center") 'set-justification-center))
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
208 (define-key map [?b] (cons (purecopy "Full") 'set-justification-full))
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
209 (define-key map [?r] (cons (purecopy "Right") 'set-justification-right))
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
210 (define-key map [?l] (cons (purecopy "Left") 'set-justification-left))
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
211 (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
212 map)
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
213 "Submenu for text justification commands.")
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
214 ;;;###autoload
10520
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
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
217 ;;;###autoload
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
218 (defvar facemenu-indentation-menu
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
219 (let ((map (make-sparse-keymap "Indentation")))
12014
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
220 (define-key map [decrease-right-margin]
27494
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
221 (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
222 (define-key map [increase-right-margin]
27494
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
223 (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
224 (define-key map [decrease-left-margin]
27494
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
225 (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
226 (define-key map [increase-left-margin]
27494
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
227 (cons (purecopy "Indent More") 'increase-left-margin))
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
228 map)
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
229 "Submenu for indentation commands.")
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
230 ;;;###autoload
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
231 (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
232
12014
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
233 ;; This is split up to avoid an overlong line in loaddefs.el.
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
234 ;;;###autoload
12014
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
235 (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
236 "Facemenu top-level menu keymap.")
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
237 ;;;###autoload
12014
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
238 (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
239 ;;;###autoload
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
240 (let ((map facemenu-menu))
27494
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
241 (define-key map [dc] (cons (purecopy "Display Colors") 'list-colors-display))
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
242 (define-key map [df] (cons (purecopy "Display Faces") 'list-faces-display))
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
243 (define-key map [dp] (cons (purecopy "List Properties")
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
244 'list-text-properties-at))
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
245 (define-key map [ra] (cons (purecopy "Remove Text Properties")
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
246 'facemenu-remove-all))
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
247 (define-key map [rm] (cons (purecopy "Remove Face Properties")
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
248 'facemenu-remove-face-props))
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
249 (define-key map [s1] (list (purecopy "--"))))
12014
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
250 ;;;###autoload
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
251 (let ((map facemenu-menu))
27494
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
252 (define-key map [in] (cons (purecopy "Indentation")
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
253 'facemenu-indentation-menu))
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
254 (define-key map [ju] (cons (purecopy "Justification")
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
255 'facemenu-justification-menu))
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
256 (define-key map [s2] (list (purecopy "--")))
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
257 (define-key map [sp] (cons (purecopy "Special Properties")
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
258 'facemenu-special-menu))
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
259 (define-key map [bg] (cons (purecopy "Background Color")
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
260 'facemenu-background-menu))
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
261 (define-key map [fg] (cons (purecopy "Foreground Color")
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
262 'facemenu-foreground-menu))
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
263 (define-key map [fc] (cons (purecopy "Face")
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
264 'facemenu-face-menu)))
12014
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
265 ;;;###autoload
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
266 (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
267
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
268 (defvar facemenu-keymap
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
269 (let ((map (make-sparse-keymap "Set face")))
27494
6a6704c5e3b4 Purecopy various strings.
Dave Love <fx@gnu.org>
parents: 26736
diff changeset
270 (define-key map "o" (cons (purecopy "Other...") 'facemenu-set-face))
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
271 map)
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
272 "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
273 `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
274 requested in `facemenu-keybindings'.")
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
275 (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
276
13923
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
277
19009
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
278 (defcustom facemenu-add-face-function nil
13923
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
279 "Function called at beginning of text to change or `nil'.
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
280 This function is passed the FACE to set and END of text to change, and must
19009
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
281 return a string which is inserted. It may set `facemenu-end-add-face'."
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
282 :type '(choice (const :tag "None" nil)
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
283 function)
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
284 :group 'facemenu)
13923
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
285
19009
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
286 (defcustom facemenu-end-add-face nil
13923
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
287 "String to insert or function called at end of text to change or `nil'.
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
288 This function is passed the FACE to set, and must return a string which is
19009
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
289 inserted."
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
290 :type '(choice (const :tag "None" nil)
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
291 string
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
292 function)
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
293 :group 'facemenu)
13923
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
294
19009
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
295 (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
296 "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
297 This function is passed the START and END of text to change.
19009
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
298 May also be `t' meaning to use `facemenu-add-face-function'."
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
299 :type '(choice (const :tag "None" nil)
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
300 (const :tag "Use add-face" t)
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
301 function)
1493fc19f324 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 18476
diff changeset
302 :group 'facemenu)
13923
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
303
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
304 ;;; Internal Variables
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
305
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
306 (defvar facemenu-color-alist nil
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
307 ;; Don't initialize here; that doesn't work if preloaded.
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
308 "Alist of colors, used for completion.
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
309 If null, `facemenu-read-color' will set it.")
9494
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
310
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 (defun facemenu-update ()
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
312 "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
313 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
314 variables."
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315 (interactive)
9494
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
316
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
317 ;; 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
318 (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
319 (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
320
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
321 ;;;###autoload
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322 (defun facemenu-set-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
323 "Add FACE to the region or next character typed.
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
324 It will be added to the top of the face list; any faces lower on the list that
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
325 will not show through at all will be removed.
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
326
12014
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
327 Interactively, the face to be used is read with the minibuffer.
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
328
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
329 If the region is active and there is no prefix argument,
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
330 this command sets the region to the requested face.
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
331
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
332 Otherwise, this command specifies the face for the next character
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
333 inserted. Moving point or switching buffers before
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
334 typing a character to insert cancels the specification."
29050
e3cbe0ccf8c9 (facemenu-set-face): Fix interactive prompt.
Dave Love <fx@gnu.org>
parents: 28111
diff changeset
335 (interactive (list (read-face-name "Use face")))
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
336 (barf-if-buffer-read-only)
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
337 (facemenu-add-new-face face)
12014
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
338 (if (and mark-active (not current-prefix-arg))
9494
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
339 (let ((start (or start (region-beginning)))
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
340 (end (or end (region-end))))
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
341 (facemenu-add-face face start end))
13923
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
342 (facemenu-add-face face)))
9494
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
343
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
344 ;;;###autoload
9494
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
345 (defun facemenu-set-foreground (color &optional start end)
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
346 "Set the foreground color of the region or next character typed.
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
347 The color is prompted for. A face named `fg:color' is used \(or created).
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
348 If the region is active, it will be set to the requested face. If
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
349 it is inactive \(even if mark-even-if-inactive is set) the next
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
350 character that is typed \(via `self-insert-command') will be set to
11830
f92fb9b9e3c8 (facemenu-set-face-from-menu): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 11465
diff changeset
351 the selected face. Moving point or switching buffers before
9494
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
352 typing a character cancels the request."
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
353 (interactive (list (facemenu-read-color "Foreground color: ")))
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
354 (let ((face (intern (concat "fg:" color))))
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
355 (or (facemenu-get-face face)
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
356 (error "Unknown color: %s" color))
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
357 (facemenu-set-face face start end)))
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
358
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
359 ;;;###autoload
9494
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
360 (defun facemenu-set-background (color &optional start end)
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
361 "Set the background color of the region or next character typed.
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
362 The color is prompted for. A face named `bg:color' is used \(or created).
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
363 If the region is active, it will be set to the requested face. If
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
364 it is inactive \(even if mark-even-if-inactive is set) the next
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
365 character that is typed \(via `self-insert-command') will be set to
11830
f92fb9b9e3c8 (facemenu-set-face-from-menu): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 11465
diff changeset
366 the selected face. Moving point or switching buffers before
9494
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
367 typing a character cancels the request."
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
368 (interactive (list (facemenu-read-color "Background color: ")))
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
369 (let ((face (intern (concat "bg:" color))))
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
370 (or (facemenu-get-face face)
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
371 (error "Unknown color: %s" color))
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
372 (facemenu-set-face face start end)))
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
374 ;;;###autoload
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 (defun facemenu-set-face-from-menu (face start end)
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 "Set the face of the region or next character typed.
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 This function is designed to be called from a menu; the face to use
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 is the menu item's name.
12014
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
379
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
380 If the region is active and there is no prefix argument,
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
381 this command sets the region to the requested face.
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
382
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
383 Otherwise, this command specifies the face for the next character
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
384 inserted. Moving point or switching buffers before
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
385 typing a character 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
386 (interactive (list last-command-event
12014
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
387 (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
388 (region-beginning))
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
389 (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
390 (region-end))))
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
391 (barf-if-buffer-read-only)
9494
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
392 (facemenu-get-face face)
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 (if start
9494
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
394 (facemenu-add-face face start end)
13923
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
395 (facemenu-add-face face)))
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
397 ;;;###autoload
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 (defun facemenu-set-invisible (start end)
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 "Make the region invisible.
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 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
401 `facemenu-remove-special'."
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 (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
403 (add-text-properties start end '(invisible t)))
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
405 ;;;###autoload
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 (defun facemenu-set-intangible (start end)
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 "Make the region intangible: disallow moving into it.
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 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
409 `facemenu-remove-special'."
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 (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
411 (add-text-properties start end '(intangible t)))
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
413 ;;;###autoload
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 (defun facemenu-set-read-only (start end)
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 "Make the region unmodifiable.
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 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
417 `facemenu-remove-special'."
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 (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
419 (add-text-properties start end '(read-only t)))
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420
11091
c968d4c026b7 Doc fix + autoload cookies.
Boris Goldowsky <boris@gnu.org>
parents: 11081
diff changeset
421 ;;;###autoload
20443
76ea51acad22 (facemenu-remove-face-props): Renamed from
Karl Heuer <kwzh@gnu.org>
parents: 19686
diff changeset
422 (defun facemenu-remove-face-props (start end)
76ea51acad22 (facemenu-remove-face-props): Renamed from
Karl Heuer <kwzh@gnu.org>
parents: 19686
diff changeset
423 "Remove `face' and `mouse-face' text properties."
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 (interactive "*r") ; error if buffer is read-only despite the next line.
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 (let ((inhibit-read-only t))
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 (remove-text-properties
20443
76ea51acad22 (facemenu-remove-face-props): Renamed from
Karl Heuer <kwzh@gnu.org>
parents: 19686
diff changeset
427 start end '(face nil mouse-face nil))))
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
429 ;;;###autoload
12014
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
430 (defun facemenu-remove-all (start end)
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
431 "Remove all text properties from the region."
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
432 (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
433 (let ((inhibit-read-only t))
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
434 (set-text-properties start end nil)))
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
435
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
436 ;;;###autoload
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
437 (defun facemenu-remove-special (start end)
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
438 "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
439 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
440 (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
441 (let ((inhibit-read-only t))
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
442 (remove-text-properties
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
443 start end '(invisible nil intangible nil read-only nil))))
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
444
e4932082046a (facemenu-special-menu): Use characters, not symbols.
Karl Heuer <kwzh@gnu.org>
parents: 11830
diff changeset
445 ;;;###autoload
11081
b651fb9a8216 (list-text-properties-at): New fn.
Boris Goldowsky <boris@gnu.org>
parents: 10814
diff changeset
446 (defun list-text-properties-at (p)
b651fb9a8216 (list-text-properties-at): New fn.
Boris Goldowsky <boris@gnu.org>
parents: 10814
diff changeset
447 "Pop up a buffer listing text-properties at LOCATION."
b651fb9a8216 (list-text-properties-at): New fn.
Boris Goldowsky <boris@gnu.org>
parents: 10814
diff changeset
448 (interactive "d")
13923
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
449 (let ((props (text-properties-at p))
14901
64c1d20f4b5f (list-text-properties-at): Display category's properties.
Richard M. Stallman <rms@gnu.org>
parents: 14312
diff changeset
450 category
13923
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
451 str)
11081
b651fb9a8216 (list-text-properties-at): New fn.
Boris Goldowsky <boris@gnu.org>
parents: 10814
diff changeset
452 (if (null props)
b651fb9a8216 (list-text-properties-at): New fn.
Boris Goldowsky <boris@gnu.org>
parents: 10814
diff changeset
453 (message "None")
13923
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
454 (if (and (not (cdr (cdr props)))
14901
64c1d20f4b5f (list-text-properties-at): Display category's properties.
Richard M. Stallman <rms@gnu.org>
parents: 14312
diff changeset
455 (not (eq (car props) 'category))
13923
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
456 (< (length (setq str (format "Text property at %d: %s %S"
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
457 p (car props) (car (cdr props)))))
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
458 (frame-width)))
14312
6dfd1f4fa87c (list-text-properties-at): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
459 (message "%s" str)
13923
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
460 (with-output-to-temp-buffer "*Text Properties*"
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
461 (princ (format "Text properties at %d:\n\n" p))
27929
c3e8689514c1 (list-text-properties-at): Set help-xref-stack to
Dave Love <fx@gnu.org>
parents: 27715
diff changeset
462 (setq help-xref-stack nil)
13923
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
463 (while props
14901
64c1d20f4b5f (list-text-properties-at): Display category's properties.
Richard M. Stallman <rms@gnu.org>
parents: 14312
diff changeset
464 (if (eq (car props) 'category)
64c1d20f4b5f (list-text-properties-at): Display category's properties.
Richard M. Stallman <rms@gnu.org>
parents: 14312
diff changeset
465 (setq category (car (cdr props))))
13923
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
466 (princ (format "%-20s %S\n"
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
467 (car props) (car (cdr props))))
14901
64c1d20f4b5f (list-text-properties-at): Display category's properties.
Richard M. Stallman <rms@gnu.org>
parents: 14312
diff changeset
468 (setq props (cdr (cdr props))))
64c1d20f4b5f (list-text-properties-at): Display category's properties.
Richard M. Stallman <rms@gnu.org>
parents: 14312
diff changeset
469 (if category
64c1d20f4b5f (list-text-properties-at): Display category's properties.
Richard M. Stallman <rms@gnu.org>
parents: 14312
diff changeset
470 (progn
64c1d20f4b5f (list-text-properties-at): Display category's properties.
Richard M. Stallman <rms@gnu.org>
parents: 14312
diff changeset
471 (setq props (symbol-plist category))
64c1d20f4b5f (list-text-properties-at): Display category's properties.
Richard M. Stallman <rms@gnu.org>
parents: 14312
diff changeset
472 (princ (format "\nCategory %s:\n\n" category))
64c1d20f4b5f (list-text-properties-at): Display category's properties.
Richard M. Stallman <rms@gnu.org>
parents: 14312
diff changeset
473 (while props
64c1d20f4b5f (list-text-properties-at): Display category's properties.
Richard M. Stallman <rms@gnu.org>
parents: 14312
diff changeset
474 (princ (format "%-20s %S\n"
64c1d20f4b5f (list-text-properties-at): Display category's properties.
Richard M. Stallman <rms@gnu.org>
parents: 14312
diff changeset
475 (car props) (car (cdr props))))
64c1d20f4b5f (list-text-properties-at): Display category's properties.
Richard M. Stallman <rms@gnu.org>
parents: 14312
diff changeset
476 (if (eq (car props) 'category)
64c1d20f4b5f (list-text-properties-at): Display category's properties.
Richard M. Stallman <rms@gnu.org>
parents: 14312
diff changeset
477 (setq category (car (cdr props))))
64c1d20f4b5f (list-text-properties-at): Display category's properties.
Richard M. Stallman <rms@gnu.org>
parents: 14312
diff changeset
478 (setq props (cdr (cdr props)))))))))))
11081
b651fb9a8216 (list-text-properties-at): New fn.
Boris Goldowsky <boris@gnu.org>
parents: 10814
diff changeset
479
b651fb9a8216 (list-text-properties-at): New fn.
Boris Goldowsky <boris@gnu.org>
parents: 10814
diff changeset
480 ;;;###autoload
11372
874b91f4adc4 (facemenu-read-color): Don't ignore PROMPT arg. Make arg optional.
Boris Goldowsky <boris@gnu.org>
parents: 11234
diff changeset
481 (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
482 "Read a color using the minibuffer."
11372
874b91f4adc4 (facemenu-read-color): Don't ignore PROMPT arg. Make arg optional.
Boris Goldowsky <boris@gnu.org>
parents: 11234
diff changeset
483 (let ((col (completing-read (or prompt "Color: ")
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
484 (or facemenu-color-alist
26736
a0674327c167 Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25278
diff changeset
485 (mapcar 'list (defined-colors)))
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
486 nil t)))
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
487 (if (equal "" col)
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
488 nil
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
489 col)))
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
491 ;;;###autoload
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
492 (defun list-colors-display (&optional list)
11465
9fa2f8b87890 (list-colors-display): Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents: 11372
diff changeset
493 "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
494 If the optional argument LIST is non-nil, it should be a list of
9fa2f8b87890 (list-colors-display): Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents: 11372
diff changeset
495 colors to display. Otherwise, this command computes a list
9fa2f8b87890 (list-colors-display): Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents: 11372
diff changeset
496 of colors that the current display can handle."
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
497 (interactive)
25138
b005bf702615 (list-colors-display): Make it work on ttys.
Dave Love <fx@gnu.org>
parents: 20443
diff changeset
498 (when (null list)
26736
a0674327c167 Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25278
diff changeset
499 (setq list (defined-colors))
25138
b005bf702615 (list-colors-display): Make it work on ttys.
Dave Love <fx@gnu.org>
parents: 20443
diff changeset
500 ;; Delete duplicate colors.
b005bf702615 (list-colors-display): Make it work on ttys.
Dave Love <fx@gnu.org>
parents: 20443
diff changeset
501 (let ((l list))
b005bf702615 (list-colors-display): Make it work on ttys.
Dave Love <fx@gnu.org>
parents: 20443
diff changeset
502 (while (cdr l)
b005bf702615 (list-colors-display): Make it work on ttys.
Dave Love <fx@gnu.org>
parents: 20443
diff changeset
503 (if (facemenu-color-equal (car l) (car (cdr l)))
b005bf702615 (list-colors-display): Make it work on ttys.
Dave Love <fx@gnu.org>
parents: 20443
diff changeset
504 (setcdr l (cdr (cdr l)))
b005bf702615 (list-colors-display): Make it work on ttys.
Dave Love <fx@gnu.org>
parents: 20443
diff changeset
505 (setq l (cdr l))))))
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
506 (with-output-to-temp-buffer "*Colors*"
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
507 (save-excursion
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
508 (set-buffer standard-output)
19558
56079fac4d24 (facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents: 19009
diff changeset
509 (let (s)
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
510 (while list
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
511 (setq s (point))
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
512 (insert (car list))
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
513 (indent-to 20)
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
514 (put-text-property s (point) 'face
19558
56079fac4d24 (facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents: 19009
diff changeset
515 (cons 'background-color (car list)))
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
516 (setq s (point))
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
517 (insert " " (car list) "\n")
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
518 (put-text-property s (point) 'face
19558
56079fac4d24 (facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents: 19009
diff changeset
519 (cons 'foreground-color (car list)))
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
520 (setq list (cdr list)))))))
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
521
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
522 (defun facemenu-color-equal (a b)
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
523 "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
524 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
525 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
526 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
527 determine the correct answer."
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
528 (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
529 ((equal (color-values a) (color-values b)))))
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
530
13923
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
531 (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
532 "Add FACE to text between START and END.
13923
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
533 If START is `nil' or START to END is empty, add FACE to next typed character
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
534 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
535 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
536 that will be removed from the list.
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
537 If `facemenu-add-face-function' and maybe `facemenu-end-add-face' are non-`nil'
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
538 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
539
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
540 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
541 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
542 effect. See `facemenu-remove-face-function'."
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
543 (interactive "*xFace: \nr")
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
544 (if (and (eq face 'default)
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
545 (not (eq facemenu-remove-face-function t)))
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
546 (if facemenu-remove-face-function
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
547 (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
548 (if (and start (< start end))
e16dc69d909a (facemenu-add-face): Adding default to no region
Richard M. Stallman <rms@gnu.org>
parents: 13923
diff changeset
549 (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
550 (setq self-insert-face 'default
e16dc69d909a (facemenu-add-face): Adding default to no region
Richard M. Stallman <rms@gnu.org>
parents: 13923
diff changeset
551 self-insert-face-command this-command)))
13923
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
552 (if facemenu-add-face-function
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
553 (save-excursion
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
554 (if end (goto-char end))
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
555 (save-excursion
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
556 (if start (goto-char start))
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
557 (insert-before-markers
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
558 (funcall facemenu-add-face-function face end)))
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
559 (if facemenu-end-add-face
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
560 (insert (if (stringp facemenu-end-add-face)
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
561 facemenu-end-add-face
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
562 (funcall facemenu-end-add-face face)))))
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
563 (if (and start (< start end))
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
564 (let ((part-start start) part-end)
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
565 (while (not (= part-start end))
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
566 (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
567 nil end))
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
568 (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
569 (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
570 (if (null prev)
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
571 face
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
572 (facemenu-active-faces
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
573 (cons face
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
574 (if (listp prev)
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
575 prev
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
576 (list prev)))))))
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
577 (setq part-start part-end)))
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
578 (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
579 (cons face (if (listp self-insert-face)
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
580 self-insert-face
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
581 (list self-insert-face)))
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
582 face)
35e379a3952e (facemenu-read-color, list-colors-display)
Richard M. Stallman <rms@gnu.org>
parents: 13495
diff changeset
583 self-insert-face-command this-command)))))
9494
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
584
13495
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
585 (defun facemenu-active-faces (face-list &optional frame)
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
586 "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
587 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
588 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
589 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
590 use the selected frame. If t, then the global, non-frame faces are used."
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
591 (let* ((mask-atts (copy-sequence (internal-get-face (car face-list) frame)))
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
592 (active-list (list (car face-list)))
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
593 (face-list (cdr face-list))
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
594 (mask-len (length mask-atts)))
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
595 (while face-list
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
596 (if (let ((face-atts (internal-get-face (car face-list) frame))
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
597 (i mask-len) (useful nil))
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
598 (while (> (setq i (1- i)) 1)
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
599 (and (aref face-atts i) (not (aref mask-atts i))
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
600 (aset mask-atts i (setq useful t))))
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
601 useful)
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
602 (setq active-list (cons (car face-list) active-list)))
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
603 (setq face-list (cdr face-list)))
fcfb5f397b49 (facemenu-active-faces): Replaces function
Karl Heuer <kwzh@gnu.org>
parents: 13433
diff changeset
604 (nreverse active-list)))
9494
9a4ed505445e (facemenu-read-color, facemenu-colors): New fn, var.
Richard M. Stallman <rms@gnu.org>
parents: 8953
diff changeset
605
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
606 (defun facemenu-get-face (symbol)
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
607 "Make sure FACE exists.
19686
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
608 If not, create it and add it to the appropriate menu. Return the symbol.
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
609
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
610 If a window system is in use, and this function creates a face named
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
611 `fg:color', then it sets the foreground to that color. Likewise, `bg:color'
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
612 means to set the background. In either case, if the color is undefined,
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
613 no color is set and a warning is issued."
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
614 (let ((name (symbol-name symbol))
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
615 foreground)
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
616 (cond ((internal-find-face symbol))
28111
90875cd704b5 Use display-color-p.
Dave Love <fx@gnu.org>
parents: 27929
diff changeset
617 ((and (display-color-p)
19686
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
618 (or (setq foreground (string-match "^fg:" name))
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
619 (string-match "^bg:" name)))
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
620 (let ((face (make-face symbol))
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
621 (color (substring name 3)))
19686
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
622 (if (x-color-defined-p color)
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
623 (if foreground
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
624 (set-face-foreground face color)
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
625 (set-face-background face color))
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
626 (message "Color \"%s\" undefined" color))))
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
627 (t (make-face symbol))))
a6ea17425718 (facemenu-get-face): Just warn when given an
Richard M. Stallman <rms@gnu.org>
parents: 19558
diff changeset
628 symbol)
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
629
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
630 (defun facemenu-add-new-face (face)
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
631 "Add a FACE to the appropriate Face menu.
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
632 Automatically called when a new face is created."
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
633 (let* ((name (symbol-name face))
17555
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
634 menu docstring
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
635 (key (cdr (assoc face facemenu-keybindings)))
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
636 function menu-val)
17555
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
637 (cond ((string-match "^fg:" name)
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
638 (setq name (substring name 3))
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
639 (setq docstring
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
640 (format "Select foreground color %s for subsequent insertion."
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
641 name))
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
642 (setq menu 'facemenu-foreground-menu))
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
643 ((string-match "^bg:" name)
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
644 (setq name (substring name 3))
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
645 (setq docstring
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
646 (format "Select background color %s for subsequent insertion."
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
647 name))
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
648 (setq menu 'facemenu-background-menu))
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
649 (t
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
650 (setq docstring
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
651 (format "Select face `%s' for subsequent insertion."
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
652 name))
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
653 (setq menu 'facemenu-face-menu)))
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
654 (cond ((eq t facemenu-unlisted-faces))
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
655 ((memq face facemenu-unlisted-faces))
19558
56079fac4d24 (facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents: 19009
diff changeset
656 ;; test against regexps in facemenu-unlisted-faces
56079fac4d24 (facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents: 19009
diff changeset
657 ((let ((unlisted facemenu-unlisted-faces)
56079fac4d24 (facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents: 19009
diff changeset
658 (matched nil))
56079fac4d24 (facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents: 19009
diff changeset
659 (while (and unlisted (not matched))
56079fac4d24 (facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents: 19009
diff changeset
660 (if (and (stringp (car unlisted))
56079fac4d24 (facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents: 19009
diff changeset
661 (string-match (car unlisted) name))
56079fac4d24 (facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents: 19009
diff changeset
662 (setq matched t)
56079fac4d24 (facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents: 19009
diff changeset
663 (setq unlisted (cdr unlisted))))
56079fac4d24 (facemenu-unlisted-faces): Expand variable
Richard M. Stallman <rms@gnu.org>
parents: 19009
diff changeset
664 matched))
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
665 (key ; has a keyboard equivalent. These go at the front.
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
666 (setq function (intern (concat "facemenu-set-" name)))
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
667 (fset function
17555
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
668 `(lambda ()
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
669 ,docstring
6e2928cff18e (facemenu-add-new-face): Rewrite to give each
Richard M. Stallman <rms@gnu.org>
parents: 17505
diff changeset
670 (interactive)
18476
b1a322f1666d (facemenu-add-new-face): Fix comma in backquote.
Richard M. Stallman <rms@gnu.org>
parents: 17555
diff changeset
671 (facemenu-set-face (quote ,face))))
10520
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
672 (define-key 'facemenu-keymap key (cons name function))
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
673 (define-key menu key (cons name function)))
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
674 ((facemenu-iterate ; check if equivalent face is already in the menu
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
675 (lambda (m) (and (listp m)
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
676 (symbolp (car m))
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
677 (face-equal (car m) face)))
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
678 (cdr (symbol-function menu))))
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
679 (t ; No keyboard equivalent. Figure out where to put it:
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
680 (setq key (vector face)
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
681 function 'facemenu-set-face-from-menu
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
682 menu-val (symbol-function menu))
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
683 (if (and facemenu-new-faces-at-end
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
684 (> (length menu-val) 3))
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
685 (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
686 (car (nth (- (length menu-val) 3) menu-val)))
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
687 (define-key menu key (cons name function))))))
3d30caa4b459 (facemenu-keybindings, facemenu-face-menu):
Richard M. Stallman <rms@gnu.org>
parents: 10238
diff changeset
688 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
689
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
690 (defun facemenu-complete-face-list (&optional oldlist)
15358
91b8056dcd35 (facemenu-complete-face-list): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 14901
diff changeset
691 "Return list of all faces that look different.
9623
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
692 Starts with given ALIST of faces, and adds elements only if they display
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
693 differently from any face already on the list.
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
694 The faces on ALIST will end up at the end of the returned list, in reverse
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
695 order."
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
696 (let ((list (nreverse (mapcar 'car oldlist))))
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
697 (facemenu-iterate
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
698 (lambda (new-face)
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
699 (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
700 (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
701 nil)
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
702 (nreverse (face-list)))
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
703 list))
fe1c170fa35a (facemenu-get-face): Don't add to menu here.
Boris Goldowsky <boris@gnu.org>
parents: 9494
diff changeset
704
8743
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705 (defun facemenu-iterate (func iterate-list)
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706 "Apply FUNC to each element of LIST until one returns non-nil.
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
707 Returns the non-nil value it found, or nil if all were nil."
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
708 (while (and iterate-list (not (funcall func (car iterate-list))))
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709 (setq iterate-list (cdr iterate-list)))
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710 (car iterate-list))
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
711
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
712 (facemenu-update)
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
713
03445a867bed Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
714 ;;; facemenu.el ends here