comparison man/custom.texi @ 412:697ef44129c6 r21-2-14

Import from CVS: tag r21-2-14
author cvs
date Mon, 13 Aug 2007 11:20:41 +0200
parents 74fd4e045ea6
children da8ed4261e83
comparison
equal deleted inserted replaced
411:12e008d41344 412:697ef44129c6
1 \input texinfo.tex 1 \input texinfo.tex
2 2
3 @c %**start of header 3 @c %**start of header
4 @setfilename ../info/custom.info 4 @setfilename ../info/custom
5 @settitle The Customization Library 5 @settitle The Customization Library
6 @iftex 6 @iftex
7 @afourpaper 7 @afourpaper
8 @headings double 8 @headings double
9 @end iftex 9 @end iftex
11 11
12 @ifinfo 12 @ifinfo
13 @dircategory XEmacs Editor 13 @dircategory XEmacs Editor
14 @direntry 14 @direntry
15 * Customizations: (custom). Customization Library. 15 * Customizations: (custom). Customization Library.
16 package.
16 @end direntry 17 @end direntry
17 @end ifinfo 18 @end ifinfo
18 19
19 @node Top, Declaring Groups, (dir), (dir) 20 @node Top, Declaring Groups, (dir), (dir)
20 @comment node-name, next, previous, up 21 @comment node-name, next, previous, up
23 This manual describes how to declare customization groups, variables, 24 This manual describes how to declare customization groups, variables,
24 and faces. It doesn't contain any examples, but please look at the file 25 and faces. It doesn't contain any examples, but please look at the file
25 @file{cus-edit.el} which contains many declarations you can learn from. 26 @file{cus-edit.el} which contains many declarations you can learn from.
26 27
27 @menu 28 @menu
28 * Declaring Groups:: 29 * Declaring Groups::
29 * Declaring Variables:: 30 * Declaring Variables::
30 * Declaring Faces:: 31 * Declaring Faces::
31 * Usage for Package Authors:: 32 * Usage for Package Authors::
32 * Utilities:: 33 * Utilities::
33 * The Init File:: 34 * The Init File::
34 * Wishlist:: 35 * Wishlist::
35 @end menu 36 @end menu
36 37
37 All the customization declarations can be changes by keyword arguments. 38 All the customization declarations can be changes by keyword arguments.
38 Groups, variables, and faces all share these common keywords: 39 Groups, variables, and faces all share these common keywords:
39 40
40 @table @code 41 @table @code
41 @item :group 42 @item :group
42 @var{value} should be a customization group. 43 @var{value} should be a customization group.
43 Add @var{symbol} to that group. 44 Add @var{symbol} to that group.
44 @item :link 45 @item :link
45 @var{value} should be a widget type. 46 @var{value} should be a widget type.
46 Add @var{value} to the external links for this customization option. 47 Add @var{value} to the external links for this customization option.
47 Useful widget types include @code{custom-manual}, @code{info-link}, and 48 Useful widget types include @code{custom-manual}, @code{info-link}, and
48 @code{url-link}. 49 @code{url-link}.
49 @item :load 50 @item :load
50 Add @var{value} to the files that should be loaded before displaying 51 Add @var{value} to the files that should be loaded before displaying
51 this customization option. The value should be either a string, which 52 this customization option. The value should be either a string, which
52 should be a string which will be loaded with @code{load-library} unless 53 should be a string which will be loaded with @code{load-library} unless
53 present in @code{load-history}, or a symbol which will be loaded with 54 present in @code{load-history}, or a symbol which will be loaded with
54 @code{require}. 55 @code{require}.
55 @item :tag 56 @item :tag
56 @var{Value} should be a short string used for identifying the option in 57 @var{Value} should be a short string used for identifying the option in
57 customization menus and buffers. By default the tag will be 58 customization menus and buffers. By default the tag will be
58 automatically created from the options name. 59 automatically created from the options name.
59 @end table 60 @end table
60 61
61 @node Declaring Groups, Declaring Variables, Top, Top 62 @node Declaring Groups, Declaring Variables, Top, Top
62 @comment node-name, next, previous, up 63 @comment node-name, next, previous, up
63 @section Declaring Groups 64 @section Declaring Groups
64 65
65 Use @code{defgroup} to declare new customization groups. 66 Use @code{defgroup} to declare new customization groups.
66 67
67 @defun defgroup symbol members doc [keyword value]... 68 @defun defgroup symbol members doc [keyword value]...
68 Declare @var{symbol} as a customization group containing @var{members}. 69 Declare @var{symbol} as a customization group containing @var{members}.
69 @var{symbol} does not need to be quoted. 70 @var{symbol} does not need to be quoted.
70 71
71 @var{doc} is the group documentation. 72 @var{doc} is the group documentation.
72 73
73 @var{members} should be an alist of the form ((@var{name} 74 @var{members} should be an alist of the form ((@var{name}
76 @code{custom-variable} for editing variables, @code{custom-face} for 77 @code{custom-variable} for editing variables, @code{custom-face} for
77 editing faces, and @code{custom-group} for editing groups.@refill 78 editing faces, and @code{custom-group} for editing groups.@refill
78 79
79 Internally, custom uses the symbol property @code{custom-group} to keep 80 Internally, custom uses the symbol property @code{custom-group} to keep
80 track of the group members, and @code{group-documentation} for the 81 track of the group members, and @code{group-documentation} for the
81 documentation string. 82 documentation string.
82 83
83 The following additional @var{keyword}'s are defined: 84 The following additional @var{keyword}'s are defined:
84 85
85 @table @code 86 @table @code
86 @item :prefix 87 @item :prefix
104 @var{doc} is the variable documentation. 105 @var{doc} is the variable documentation.
105 106
106 The following additional @var{keyword}'s are defined: 107 The following additional @var{keyword}'s are defined:
107 108
108 @table @code 109 @table @code
109 @item :type 110 @item :type
110 @var{value} should be a widget type. 111 @var{value} should be a widget type.
111 112
112 @item :options 113 @item :options
113 @var{value} should be a list of possible members of the specified type. 114 @var{value} should be a list of possible members of the specified type.
114 For hooks, this is a list of function names. 115 For hooks, this is a list of function names.
120 121
121 @table @code 122 @table @code
122 @item custom-initialize-set 123 @item custom-initialize-set
123 Use the @code{:set} method to initialize the variable. Do not 124 Use the @code{:set} method to initialize the variable. Do not
124 initialize it if already bound. This is the default @code{:initialize} 125 initialize it if already bound. This is the default @code{:initialize}
125 method. 126 method.
126 127
127 @item custom-initialize-default 128 @item custom-initialize-default
128 Always use @code{set-default} to initialize the variable, even if a 129 Always use @code{set-default} to initialize the variable, even if a
129 @code{:set} method has been specified. 130 @code{:set} method has been specified.
130 131
133 method with the value returned by the @code{:get} method. 134 method with the value returned by the @code{:get} method.
134 135
135 @item custom-initialize-changed 136 @item custom-initialize-changed
136 Like @code{custom-initialize-reset}, but use @code{set-default} to 137 Like @code{custom-initialize-reset}, but use @code{set-default} to
137 initialize the variable if it is not bound and has not been set 138 initialize the variable if it is not bound and has not been set
138 already. 139 already.
139 @end table 140 @end table
140 141
141 @item :set 142 @item :set
142 @var{value} should be a function to set the value of the symbol. It 143 @var{value} should be a function to set the value of the symbol. It
143 takes two arguments, the symbol to set and the value to give it. The 144 takes two arguments, the symbol to set and the value to give it. The
144 default is @code{set-default}. 145 default is @code{set-default}.
145 146
146 @item :get 147 @item :get
149 value for that symbol. The default is @code{default-value}. 150 value for that symbol. The default is @code{default-value}.
150 151
151 @item :require 152 @item :require
152 @var{value} should be a feature symbol. Each feature will be required 153 @var{value} should be a feature symbol. Each feature will be required
153 when the `defcustom' is evaluated, or when Emacs is started if the user 154 when the `defcustom' is evaluated, or when Emacs is started if the user
154 has saved this option. 155 has saved this option.
155 156
156 @end table 157 @end table
157 158
158 @xref{Sexp Types,,,widget,The Widget Library}, for information about 159 @xref{Sexp Types,,,widget,The Widget Library}, for information about
159 widgets to use together with the @code{:type} keyword. 160 widgets to use together with the @code{:type} keyword.
178 @comment node-name, next, previous, up 179 @comment node-name, next, previous, up
179 @section Declaring Faces 180 @section Declaring Faces
180 181
181 Faces are declared with @code{defface}. 182 Faces are declared with @code{defface}.
182 183
183 @defun defface face spec doc [keyword value]... 184 @defun defface face spec doc [keyword value]...
184 185
185 Declare @var{face} as a customizable face that defaults to @var{spec}. 186 Declare @var{face} as a customizable face that defaults to @var{spec}.
186 @var{face} does not need to be quoted. 187 @var{face} does not need to be quoted.
187 188
188 If @var{face} has been set with `custom-set-face', set the face attributes 189 If @var{face} has been set with `custom-set-face', set the face attributes
216 217
217 @item background 218 @item background
218 (what color is used for the background text)@* 219 (what color is used for the background text)@*
219 Should be one of @code{light} or @code{dark}. 220 Should be one of @code{light} or @code{dark}.
220 @end table 221 @end table
221 222
222 Internally, custom uses the symbol property @code{face-defface-spec} for 223 Internally, custom uses the symbol property @code{face-defface-spec} for
223 the program specified default face properties, @code{saved-face} for 224 the program specified default face properties, @code{saved-face} for
224 properties saved by the user, and @code{face-documentation} for the 225 properties saved by the user, and @code{face-documentation} for the
225 documentation string.@refill 226 documentation string.@refill
226 227
238 239
239 The top level group for the package should itself be member of one or 240 The top level group for the package should itself be member of one or
240 more of the standard customization groups. There exists a group for 241 more of the standard customization groups. There exists a group for
241 each @emph{finder} keyword. Press @kbd{C-h p} to see a list of finder 242 each @emph{finder} keyword. Press @kbd{C-h p} to see a list of finder
242 keywords, and add you group to each of them, using the @code{:group} 243 keywords, and add you group to each of them, using the @code{:group}
243 keyword. 244 keyword.
244 245
245 @node Utilities, The Init File, Usage for Package Authors, Top 246 @node Utilities, The Init File, Usage for Package Authors, Top
246 @comment node-name, next, previous, up 247 @comment node-name, next, previous, up
247 @section Utilities 248 @section Utilities
248 249
249 These utilities can come in handy when adding customization support. 250 These utilities can come in handy when adding customization support.
250 251
251 @deffn Widget custom-manual 252 @deffn Widget custom-manual
252 Widget type for specifying the info manual entry for a customization 253 Widget type for specifying the info manual entry for a customization
253 option. It takes one argument, an info address. 254 option. It takes one argument, an info address.
254 @end deffn 255 @end deffn
267 @var{load} should be either a library file name, or a feature name. 268 @var{load} should be either a library file name, or a feature name.
268 @end defun 269 @end defun
269 270
270 @defun customize-menu-create symbol &optional name 271 @defun customize-menu-create symbol &optional name
271 Create menu for customization group @var{symbol}. 272 Create menu for customization group @var{symbol}.
272 If optional @var{name} is given, use that as the name of the menu. 273 If optional @var{name} is given, use that as the name of the menu.
273 Otherwise the menu will be named `Customize'. 274 Otherwise the menu will be named `Customize'.
274 The menu is in a format applicable to @code{easy-menu-define}. 275 The menu is in a format applicable to @code{easy-menu-define}.
275 @end defun 276 @end defun
276 277
277 @node The Init File, Wishlist, Utilities, Top 278 @node The Init File, Wishlist, Utilities, Top
288 @node Wishlist, , The Init File, Top 289 @node Wishlist, , The Init File, Top
289 @comment node-name, next, previous, up 290 @comment node-name, next, previous, up
290 @section Wishlist 291 @section Wishlist
291 292
292 @itemize @bullet 293 @itemize @bullet
293 @item 294 @item
294 Better support for keyboard operations in the customize buffer. 295 Better support for keyboard operations in the customize buffer.
295 296
296 @item 297 @item
297 Integrate with @file{w3} so you can get customization buffers with much 298 Integrate with @file{w3} so you can get customization buffers with much
298 better formatting. I'm thinking about adding a <custom>name</custom> 299 better formatting. I'm thinking about adding a <custom>name</custom>
299 tag. The latest w3 have some support for this, so come up with a 300 tag. The latest w3 have some support for this, so come up with a
300 convincing example. 301 convincing example.
301 302
302 @item 303 @item
303 Add an `examples' section, with explained examples of custom type 304 Add an `examples' section, with explained examples of custom type
304 definitions. 305 definitions.
305 306
306 @item 307 @item
307 Support selectable color themes. I.e., change many faces by setting one 308 Support selectable color themes. I.e., change many faces by setting one
308 variable. 309 variable.
309 310
314 @item 315 @item
315 Make it possible to append to `choice', `radio', and `set' options. 316 Make it possible to append to `choice', `radio', and `set' options.
316 317
317 @item 318 @item
318 Ask whether set or modified variables should be saved in 319 Ask whether set or modified variables should be saved in
319 @code{kill-buffer-hook}. 320 @code{kill-buffer-hook}.
320 321
321 Ditto for @code{kill-emacs-query-functions}. 322 Ditto for @code{kill-emacs-query-functions}.
322 323
323 @item 324 @item
324 Command to check if there are any customization options that 325 Command to check if there are any customization options that
325 does not belong to an existing group. 326 does not belong to an existing group.
326 327
327 @item 328 @item
328 Optionally disable the point-cursor and instead highlight the selected 329 Optionally disable the point-cursor and instead highlight the selected
329 item in XEmacs. This is like the *Completions* buffer in XEmacs. 330 item in XEmacs. This is like the *Completions* buffer in XEmacs.
330 Suggested by Jens Lautenbacher 331 Suggested by Jens Lautenbacher
333 @item 334 @item
334 Explain why it is necessary that all choices have different default 335 Explain why it is necessary that all choices have different default
335 values. 336 values.
336 337
337 @item 338 @item
339 Make it possible to include a comment/remark/annotation when saving an
340 option.
341
342 @item
338 Add some direct support for meta variables, i.e. make it possible to 343 Add some direct support for meta variables, i.e. make it possible to
339 specify that this variable should be reset when that variable is 344 specify that this variable should be reset when that variable is
340 changed. 345 changed.
341 346
342 @item 347 @item
343 Add tutorial. 348 Add tutorial.
344 349
345 @item 350 @item
376 @item 381 @item
377 Add an easy way to display the standard settings when an item is modified. 382 Add an easy way to display the standard settings when an item is modified.
378 383
379 @item 384 @item
380 See if it is feasible to scan files for customization information 385 See if it is feasible to scan files for customization information
381 instead of loading them, 386 instead of loading them,
382 387
383 @item 388 @item
384 Add hint message when user push a non-pushable tag. 389 Add hint message when user push a non-pushable tag.
385 390
386 Suggest that the user unhide if hidden, and edit the value directly 391 Suggest that the user unhide if hidden, and edit the value directly
390 Use checkboxes and radio buttons in the state menus. 395 Use checkboxes and radio buttons in the state menus.
391 396
392 @item 397 @item
393 Add option to hide @samp{[hide]} for short options. Default, on. 398 Add option to hide @samp{[hide]} for short options. Default, on.
394 399
395 @item 400 @item
396 Add option to hide @samp{[state]} for options with their standard 401 Add option to hide @samp{[state]} for options with their standard
397 settings. 402 settings.
398 403
399 @item 404 @item
400 There should be a way to specify site defaults for user options. 405 There should be a way to specify site defaults for user options.
401 406
402 @item 407 @item
403 There should be more buffer styles. The default `nested style, the old 408 There should be more buffer styles. The default `nested style, the old
404 `outline' style, a `numeric' style with numbers instead of stars, an 409 `outline' style, a `numeric' style with numbers instead of stars, an