annotate man/custom.texi @ 4792:95b04754ea8c

Make #'equalp more compatible with CL; add a compiler macro, test & doc it. lisp/ChangeLog addition: 2009-11-08 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (cl-string-vector-equalp) (cl-bit-vector-vector-equalp, cl-vector-array-equalp) (cl-hash-table-contents-equalp): New functions, to implement equalp treating arrays with identical contents as equivalent, as specified by Common Lisp. (equalp): Revise this function to implement array equivalence, and the hash-table equalp behaviour specified by CL. * cl-macs.el (equalp): Add a compiler macro for this function, used when one of the arguments is constant, and as such, its type is known at compile time. man/ChangeLog addition: 2009-11-08 Aidan Kehoe <kehoea@parhasard.net> * lispref/objects.texi (Equality Predicates): Document #'equalp here, as well as #'equal and #'eq. tests/ChangeLog addition: 2009-12-31 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Test much of the functionality of equalp; add a pointer to Paul Dietz' ANSI test suite for this function, converted to Emacs Lisp. Not including the tests themselves in XEmacs because who owns the copyright on the files is unclear and the GCL people didn't respond to my queries.
author Aidan Kehoe <kehoea@parhasard.net>
date Thu, 31 Dec 2009 15:09:41 +0000
parents 95b25f4e7340
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 \input texinfo.tex
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 @c %**start of header
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 @setfilename ../info/custom.info
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 @settitle The Customization Library
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 @iftex
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 @afourpaper
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 @headings double
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 @end iftex
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10 @c %**end of header
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12 @ifinfo
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 @dircategory XEmacs Editor
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 @direntry
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15 * Customizations: (custom). Customization Library.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 @end direntry
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 @end ifinfo
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 @node Top, Declaring Groups, (dir), (dir)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20 @comment node-name, next, previous, up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 @top The Customization Library
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23 This manual describes how to declare customization groups, variables,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 and faces. It doesn't contain any examples, but please look at the file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 @file{cus-edit.el} which contains many declarations you can learn from.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 * Declaring Groups::
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 * Declaring Variables::
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 * Declaring Faces::
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 * Usage for Package Authors::
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 * Utilities::
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 * The Init File::
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 * Wishlist::
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 All the customization declarations can be changes by keyword arguments.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 Groups, variables, and faces all share these common keywords:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40 @table @code
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 @item :group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42 @var{value} should be a customization group.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 Add @var{symbol} to that group.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 @item :link
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 @var{value} should be a widget type.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 Add @var{value} to the external links for this customization option.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 Useful widget types include @code{custom-manual}, @code{info-link}, and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 @code{url-link}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 @item :load
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 Add @var{value} to the files that should be loaded before displaying
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 this customization option. The value should be either a string, which
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 should be a string which will be loaded with @code{load-library} unless
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 present in @code{load-history}, or a symbol which will be loaded with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 @code{require}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 @item :tag
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 @var{Value} should be a short string used for identifying the option in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 customization menus and buffers. By default the tag will be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 automatically created from the options name.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 @node Declaring Groups, Declaring Variables, Top, Top
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 @comment node-name, next, previous, up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 @section Declaring Groups
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 Use @code{defgroup} to declare new customization groups.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 @defun defgroup symbol members doc [keyword value]...
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 Declare @var{symbol} as a customization group containing @var{members}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 @var{symbol} does not need to be quoted.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 @var{doc} is the group documentation.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 @var{members} should be an alist of the form ((@var{name}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 @var{widget})...) where @var{name} is a symbol and @var{widget} is a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 widget for editing that symbol. Useful widgets are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 @code{custom-variable} for editing variables, @code{custom-face} for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 editing faces, and @code{custom-group} for editing groups.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 Internally, custom uses the symbol property @code{custom-group} to keep
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 track of the group members, and @code{group-documentation} for the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 documentation string.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 The following additional @var{keyword}'s are defined:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 @table @code
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 @item :prefix
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 @var{value} should be a string. If the string is a prefix for the name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 of a member of the group, that prefix will be ignored when creating a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 tag for that member.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 @node Declaring Variables, Declaring Faces, Declaring Groups, Top
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 @comment node-name, next, previous, up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 @section Declaring Variables
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 Use @code{defcustom} to declare user editable variables.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99 @defun defcustom symbol value doc [keyword value]...
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 Declare @var{symbol} as a customizable variable that defaults to @var{value}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101 Neither @var{symbol} nor @var{value} needs to be quoted.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102 If @var{symbol} is not already bound, initialize it to @var{value}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 @var{doc} is the variable documentation.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106 The following additional @var{keyword}'s are defined:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108 @table @code
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109 @item :type
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 @var{value} should be a widget type.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
111
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
112 @item :options
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
113 @var{value} should be a list of possible members of the specified type.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
114 For hooks, this is a list of function names.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116 @item :initialize
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117 @var{value} should be a function used to initialize the variable. It
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118 takes two arguments, the symbol and value given in the @code{defcustom} call.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119 Some predefined functions are:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121 @table @code
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122 @item custom-initialize-set
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
123 Use the @code{:set} method to initialize the variable. Do not
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124 initialize it if already bound. This is the default @code{:initialize}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 method.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 @item custom-initialize-default
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128 Always use @code{set-default} to initialize the variable, even if a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129 @code{:set} method has been specified.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131 @item custom-initialize-reset
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 If the variable is already bound, reset it by calling the @code{:set}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 method with the value returned by the @code{:get} method.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135 @item custom-initialize-changed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 Like @code{custom-initialize-reset}, but use @code{set-default} to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 initialize the variable if it is not bound and has not been set
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 already.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 @item :set
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 @var{value} should be a function to set the value of the symbol. It
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 takes two arguments, the symbol to set and the value to give it. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144 default is @code{set-default}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 @item :get
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 @var{value} should be a function to extract the value of symbol. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148 function takes one argument, a symbol, and should return the current
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 value for that symbol. The default is @code{default-value}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151 @item :require
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152 @var{value} should be a feature symbol. Each feature will be required
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 when the `defcustom' is evaluated, or when Emacs is started if the user
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154 has saved this option.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
156 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 @xref{Sexp Types,,,widget,The Widget Library}, for information about
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159 widgets to use together with the @code{:type} keyword.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162 Internally, custom uses the symbol property @code{custom-type} to keep
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 track of the variables type, @code{standard-value} for the program
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164 specified default value, @code{saved-value} for a value saved by the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 user, and @code{variable-documentation} for the documentation string.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 Use @code{custom-add-option} to specify that a specific function is
3128
95b25f4e7340 [xemacs-hg @ 2005-12-06 23:14:49 by adrian]
adrian
parents: 1738
diff changeset
168 useful as a member of a hook.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 @defun custom-add-option symbol option
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171 To the variable @var{symbol} add @var{option}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173 If @var{symbol} is a hook variable, @var{option} should be a hook
3128
95b25f4e7340 [xemacs-hg @ 2005-12-06 23:14:49 by adrian]
adrian
parents: 1738
diff changeset
174 member. For other types of variables, the effect is undefined."
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
177 @node Declaring Faces, Usage for Package Authors, Declaring Variables, Top
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
178 @comment node-name, next, previous, up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
179 @section Declaring Faces
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 Faces are declared with @code{defface}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183 @defun defface face spec doc [keyword value]...
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
184
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 Declare @var{face} as a customizable face that defaults to @var{spec}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186 @var{face} does not need to be quoted.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188 If @var{face} has been set with `custom-set-face', set the face attributes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
189 as specified by that function, otherwise set the face attributes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
190 according to @var{spec}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
191
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
192 @var{doc} is the face documentation.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
193
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
194 @var{spec} should be an alist of the form @samp{((@var{display} @var{atts})...)}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
195
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
196 @var{atts} is a list of face attributes and their values. The possible
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
197 attributes are defined in the variable `custom-face-attributes'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
198
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
199 The @var{atts} of the first entry in @var{spec} where the @var{display}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
200 matches the frame should take effect in that frame. @var{display} can
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201 either be the symbol `t', which will match all frames, or an alist of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202 the form @samp{((@var{req} @var{item}...)...)}@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
204 For the @var{display} to match a FRAME, the @var{req} property of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
205 frame must match one of the @var{item}. The following @var{req} are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
206 defined:@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
208 @table @code
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
209 @item type
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210 (the value of (window-system))@*
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
211 Should be one of @code{x} or @code{tty}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
212
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
213 @item class
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
214 (the frame's color support)@*
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215 Should be one of @code{color}, @code{grayscale}, or @code{mono}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
216
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
217 @item background
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
218 (what color is used for the background text)@*
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
219 Should be one of @code{light} or @code{dark}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
220 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
222 Internally, custom uses the symbol property @code{face-defface-spec} for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
223 the program specified default face properties, @code{saved-face} for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
224 properties saved by the user, and @code{face-documentation} for the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
225 documentation string.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
226
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
227 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
228
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
229 @node Usage for Package Authors, Utilities, Declaring Faces, Top
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
230 @comment node-name, next, previous, up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
231 @section Usage for Package Authors
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
232
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233 The recommended usage for the author of a typical emacs lisp package is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
234 to create one group identifying the package, and make all user options
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235 and faces members of that group. If the package has more than around 20
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
236 such options, they should be divided into a number of subgroups, with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
237 each subgroup being member of the top level group.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
238
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
239 The top level group for the package should itself be member of one or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
240 more of the standard customization groups. There exists a group for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241 each @emph{finder} keyword. Press @kbd{C-h p} to see a list of finder
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242 keywords, and add you group to each of them, using the @code{:group}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243 keyword.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
244
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245 @node Utilities, The Init File, Usage for Package Authors, Top
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
246 @comment node-name, next, previous, up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247 @section Utilities
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
248
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
249 These utilities can come in handy when adding customization support.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
250
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
251 @deffn Widget custom-manual
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
252 Widget type for specifying the info manual entry for a customization
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
253 option. It takes one argument, an info address.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
254 @end deffn
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
255
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
256 @defun custom-add-to-group group member widget
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
257 To existing @var{group} add a new @var{member} of type @var{widget},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
258 If there already is an entry for that member, overwrite it.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
259 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
260
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
261 @defun custom-add-link symbol widget
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
262 To the custom option @var{symbol} add the link @var{widget}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
263 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
264
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
265 @defun custom-add-load symbol load
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
266 To the custom option @var{symbol} add the dependency @var{load}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
267 @var{load} should be either a library file name, or a feature name.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
268 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
269
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
270 @defun customize-menu-create symbol &optional name
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
271 Create menu for customization group @var{symbol}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
272 If optional @var{name} is given, use that as the name of the menu.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
273 Otherwise the menu will be named `Customize'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
274 The menu is in a format applicable to @code{easy-menu-define}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
275 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
276
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
277 @node The Init File, Wishlist, Utilities, Top
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
278 @comment node-name, next, previous, up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279 @section The Init File
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
280
863
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 428
diff changeset
281 Customizations are saved to the file specified by @code{custom-file}, as
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 428
diff changeset
282 calls to @code{custom-set-variables} and @code{custom-set-faces}.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 428
diff changeset
283
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 428
diff changeset
284 When you save customizations, the current implementation removes the
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 428
diff changeset
285 calls to @code{custom-set-variables} and @code{custom-set-faces}, and
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 428
diff changeset
286 replaces them with code generated on the basis of the current
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 428
diff changeset
287 customization state in Emacs.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 428
diff changeset
288
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 428
diff changeset
289 By default @code{custom-file} is your @file{.emacs} file (for GNU Emacs
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 428
diff changeset
290 and older XEmacs) and is @file{custom.el} in the same directory as
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 428
diff changeset
291 @file{init.el} (in XEmacs 21.4 and later). If you use another file, you
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 428
diff changeset
292 must explicitly load it yourself.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 428
diff changeset
293
1738
f43f9ca6c7d9 [xemacs-hg @ 2003-10-10 12:39:27 by stephent]
stephent
parents: 863
diff changeset
294 As of XEmacs 21.4.7, when @code{custom-file} is present, it is loaded
863
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 428
diff changeset
295 @emph{after} @file{init.el}. This is likely to change in the future,
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 428
diff changeset
296 because (1) actions in @file{init.el} often would like to depend on
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 428
diff changeset
297 customizations for consistent appearance and (2) Custom is quite brutal
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 428
diff changeset
298 about enforcing its idea of the correct values at initialization.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
299
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
300 @node Wishlist, , The Init File, Top
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
301 @comment node-name, next, previous, up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
302 @section Wishlist
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
303
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
304 @itemize @bullet
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
305 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
306 Better support for keyboard operations in the customize buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
307
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
308 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
309 Integrate with @file{w3} so you can get customization buffers with much
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
310 better formatting. I'm thinking about adding a <custom>name</custom>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
311 tag. The latest w3 have some support for this, so come up with a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
312 convincing example.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
313
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
314 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
315 Add an `examples' section, with explained examples of custom type
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
316 definitions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
317
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
318 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
319 Support selectable color themes. I.e., change many faces by setting one
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
320 variable.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
321
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
322 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
323 Support undo using lmi's @file{gnus-undo.el}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
324
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
325
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
326 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
327 Make it possible to append to `choice', `radio', and `set' options.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
328
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
329 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
330 Ask whether set or modified variables should be saved in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
331 @code{kill-buffer-hook}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
332
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
333 Ditto for @code{kill-emacs-query-functions}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
334
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
335 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
336 Command to check if there are any customization options that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
337 does not belong to an existing group.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
338
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
339 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
340 Optionally disable the point-cursor and instead highlight the selected
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
341 item in XEmacs. This is like the *Completions* buffer in XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
342 Suggested by Jens Lautenbacher
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
343 @samp{<jens@@lemming0.lem.uni-karlsruhe.de>}.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
344
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
345 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
346 Explain why it is necessary that all choices have different default
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
347 values.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
348
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
349 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
350 Add some direct support for meta variables, i.e. make it possible to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
351 specify that this variable should be reset when that variable is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
352 changed.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
353
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
354 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
355 Add tutorial.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
356
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
357 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
358 Describe the @code{:type} syntax in this manual.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
359
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
360 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
361 Find a place is this manual for the following text:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
362
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
363 @strong{Radio vs. Buttons}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
364
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
365 Use a radio if you can't find a good way to describe the item in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
366 choice menu text. I.e. it is better to use a radio if you expect the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
367 user would otherwise manually select each item from the choice menu in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
368 turn to see what it expands too.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
369
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
370 Avoid radios if some of the items expands to complex structures.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
371
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
372 I mostly use radios when most of the items are of type
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
373 @code{function-item} or @code{variable-item}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
374
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
375 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
376 Update customize buffers when @code{custom-set-variable} or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
377 @code{custom-save-customized} is called.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
378
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
379 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
380 Better handling of saved but uninitialized items.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
381
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
382 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
383 Detect when faces have been changed outside customize.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
384
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
385 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
386 Enable mouse help in Emacs by default.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
387
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
388 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
389 Add an easy way to display the standard settings when an item is modified.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
390
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
391 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
392 See if it is feasible to scan files for customization information
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
393 instead of loading them,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
394
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
395 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
396 Add hint message when user push a non-pushable tag.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
397
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
398 Suggest that the user unhide if hidden, and edit the value directly
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
399 otherwise.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
400
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
401 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
402 Use checkboxes and radio buttons in the state menus.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
403
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
404 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
405 Add option to hide @samp{[hide]} for short options. Default, on.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
406
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
407 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
408 Add option to hide @samp{[state]} for options with their standard
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
409 settings.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
410
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
411 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
412 There should be a way to specify site defaults for user options.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
413
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
414 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
415 There should be more buffer styles. The default `nested style, the old
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
416 `outline' style, a `numeric' style with numbers instead of stars, an
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
417 `empty' style with just the group name, and `compact' with only one line
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
418 per item.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
419
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
420 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
421 Newline and tab should be displayed as @samp{^J} and @samp{^I} in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
422 @code{regexp} and @code{file} widgets. I think this can be done in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
423 XEmacs by adding a display table to the face.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
424
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
425 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
426 Use glyphs to draw the @code{customize-browse} tree.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
427
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
428 Add echo and balloon help. You should be able to read the documentation
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
429 simply by moving the mouse pointer above the name.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
430
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
431 Add parent links.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
432
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
433 Add colors.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
434
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
435 @end itemize
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
436
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
437 @contents
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
438 @bye