diff man/custom.texi @ 155:43dd3413c7c7 r20-3b4

Import from CVS: tag r20-3b4
author cvs
date Mon, 13 Aug 2007 09:39:39 +0200
parents 25f70ba0133c
children 28f395d8dc7a
line wrap: on
line diff
--- a/man/custom.texi	Mon Aug 13 09:38:27 2007 +0200
+++ b/man/custom.texi	Mon Aug 13 09:39:39 2007 +0200
@@ -9,442 +9,11 @@
 @end iftex
 @c %**end of header
 
-@node Top, Introduction, (dir), (dir)
+@node Top, Declaring Groups, (dir), (dir)
 @comment  node-name,  next,  previous,  up
 @top The Customization Library
 
-Version: 1.98
-
-@menu
-* Introduction::                
-* User Commands::               
-* The Customization Buffer::    
-* Declarations::                
-* Utilities::                   
-* The Init File::               
-* Wishlist::                    
-@end menu
-
-@node   Introduction, User Commands, Top, Top
-@comment  node-name,  next,  previous,  up
-@section Introduction
-
-This library allows customization of @dfn{user options}.  Currently two
-types of user options are supported, namely @dfn{variables} and
-@dfn{faces}.  Each user option can have four different values
-simultaneously:
-@table @dfn
-@item standard setting
-The value specified by the programmer.
-@item saved value
-The value saved by the user as the default for this variable.  This
-overwrites the standard setting when starting a new emacs.
-@item current value
-The value used by Emacs.  This will not be remembered next time you
-run Emacs.
-@item widget value
-The value entered by the user in a customization buffer, but not yet
-applied.
-@end table
-
-Variables also have a @dfn{type}, which specifies what kind of values
-the variable can hold, and how the value is presented in a customization
-buffer.  By default a variable can hold any valid expression, but the
-programmer can specify a more limited type when declaring the variable.
-
-The user options are organized in a number of @dfn{groups}.  Each group
-can contain a number user options, as well as other groups.  The groups
-allows the user to concentrate on a specific part of emacs.
-
-@node  User Commands, The Customization Buffer, Introduction, Top
-@comment  node-name,  next,  previous,  up
-@section User Commands
-
-The following commands will create a customization buffer:
-
-@table @code
-@item customize
-Create a customization buffer containing the @code{emacs} group.
-
-@item customize-group
-Create a customization buffer containing a specific group.
-
-@item customize-variable
-Create a customization buffer containing a single variable.  
-
-@item customize-face
-Create a customization buffer containing a single face.
-
-@item customize-apropos
-Create a customization buffer containing all variables, faces, and
-groups that match a user specified regular expression.
-
-@item customize-saved 
-Create a customization buffer containing all variables and faces that
-have been saved with customize.
-
-@item customize-customized
-Create a customization buffer containing all variables and faces that
-have been customized but not saved.
-@end table
-
-You can also set variables without creating a customization buffer.
-
-@deffn Command customize-set-variable var val
-Set the default for @var{variable} to @var{value}.  
-@var{value} is a Lisp object.
-
-If @var{variable} has a @code{custom-set} property, that is used for setting
-@var{variable}, otherwise @code{set-default} is used.
-
-The @code{customized-value} property of the @var{variable} will be set
-to a list with a quoted @var{value} as its sole list member.
-
-If @var{variable} has a @code{variable-interactive} property, that is
-used as if it were the arg to `interactive' (which see) to interactively
-read the value.
-
-If @var{variable} has a @code{custom-type} property, it must be a widget
-and the @code{:prompt-value} property of that widget will be used for
-reading the value.
-@end deffn
-
-All variables that have been set either from a customization buffer or
-with @code{customize-set-variable} can be saved with the command
-@code{custom-save-customized}.
-
-@deffn Command custom-save-customized
-Save all variables that have been set with customize in this session.
-@end deffn
-
-
-@node The Customization Buffer, Declarations, User Commands, Top
-@comment  node-name,  next,  previous,  up
-@section The Customization Buffer.
-
-The customization buffer allows the user to make temporary or permanent
-changes to how specific aspects of emacs works, by setting and editing
-user options.  
-
-The customization buffer contains three types of text:
-
-@table @dfn
-@item informative text
-where the normal editing commands are disabled.
-
-@item editable fields
-where you can edit with the usual emacs commands.  Editable fields are
-usually displayed with a grey background if your terminal supports
-colors, or an italic font otherwise.
-
-@item buttons
-which can be activated by either pressing the @kbd{@key{ret}} while
-point is located on the text, or pushing @kbd{mouse-2} while the mouse
-pointer is above the tex.  Buttons are usually displayed in a bold
-font. 
-@end table
-
-You can move to the next the next editable field or button by pressing
-@kbd{@key{tab}} or the previous with @kbd{M-@key{tab}}.  Some buttons
-have a small helpful message about their purpose, which will be
-displayed when you move to it with the @key{tab} key.  
-
-The buffer is divided into three part, an introductory text, a list of
-customization options, and a line of customization buttons.  Each part
-will be described in the following. 
-
-@menu
-* The Introductory Text::       
-* The Customization Buttons::   
-* The Customization Options::   
-* The Variable Options::        
-* The Face Options::            
-* The Group Options::           
-* The State Button::            
-@end menu
-
-@node  The Introductory Text, The Customization Buttons, The Customization Buffer, The Customization Buffer
-@comment  node-name,  next,  previous,  up
-@subsection  The Introductory Text
-
-The start of the buffer contains a short explanation of what it is, and
-how to get help.  It will typically look like this:
-
-@example
-This is a customization buffer.
-Push RET or click mouse-2 on the word _help_ for more information.
-@end example
-
-Rather boring.  It is mostly just informative text, but the word
-@samp{help} is a button that will bring up this document when
-activated.  
-
-@node  The Customization Buttons, The Customization Options, The Introductory Text, The Customization Buffer
-@comment  node-name,  next,  previous,  up
-@subsection The Customization Buttons
-
-The next part of the customization buffer looks like this:
-
-@example
-[Set] [Save] [Reset] [Done]
-@end example
-
-Activating the @samp{[Set]}, @samp{[Save]}, or @samp{[Reset]}
-button will affect all modified customization items that are visible in
-the buffer.  @samp{[Done]} will bury the buffer.
-
-@node  The Customization Options, The Variable Options, The Customization Buttons, The Customization Buffer
-@comment  node-name,  next,  previous,  up
-@subsection The Customization Options
-
-Each customization option looks similar to the following text:
-
-@example
- Custom Background Mode: default 
- State: this item is unchanged from its standard setting.
- [?] The brightness of the background.
-@end example
-
-The option contains the parts described below.
-
-@table @samp
-@item Custom Background Mode
-This is the tag of the the option.  The tag is a name of a variable, a
-face, or customization group.  Activating the tag has an effect that
-depends on the exact type of the option.  In this particular case,
-activating the tag will bring up a menu that will allow you to choose
-from the three possible values of the `custom-background-mode'
-variable. 
-
-@item default
-After the tag, the options value is shown.  Depending on its type, you
-may be able to edit the value directly.  If an option should contain a
-file name, it is displayed in an editable field, i.e. you can edit it
-using the standard emacs editing commands.
-
-@item State: this item is unchanged from its standard setting.
-The state line.  This line will explain the state of the option,
-e.g. whether it is currently hidden, or whether it has been modified or
-not.  Activating the button will allow you to change the state, e.g. set
-or reset the changes you have made.  This is explained in detail in the
-following sections.
-
-@item [?] 
-The documentation button.  If the documentation is more than one line,
-this button will be present.  Activating the button will toggle whether
-the complete documentation is shown, or only the first line.
-
-@item The brightness of the background.
-This is a documentation string explaining the purpose of this particular
-customization option.
-
-@end table
-
-@node  The Variable Options, The Face Options, The Customization Options, The Customization Buffer
-@comment  node-name,  next,  previous,  up
-@subsection The Variable Options
-
-The most common customization options are emacs lisp variables.  The
-actual editing of these variables depend on what type values the
-variable is expected to contain.  For example, a lisp variable whose
-value should be a string will typically be represented with an editable
-text field in the buffer, where you can change the string directly.  If
-the value is a list, each item in the list will be presented in the
-buffer buffer on a separate line, with buttons to insert new items in
-the list, or delete existing items from the list.  You may want to see 
-@ref{User Interface,,, widget, The Widget Library}, where some examples
-of editing are discussed.  
-
-You can either choose to edit the value directly, or edit the lisp
-value for that variable.  The lisp value is a lisp expression that
-will be evaluated when you start emacs.  The result of the evaluation
-will be used as the initial value for that variable.  Editing the
-lisp value is for experts only, but if the current value of the
-variable is of a wrong type (e.g. a symbol where a string is expected),
-the `edit lisp' mode will always be selected.
-
-You can see what mode is currently selected by looking at the state
-description.  It will end with @samp{(lisp)} in lisp mode.
-
-You can switch mode by activating the state button, and select either
-@samp{Edit} or @samp{Edit lisp} from the menu.
-
-You can change the state of the variable with the other menu items:
-
-@table @samp
-@item Set
-When you have made your modifications in the buffer, you need to
-activate this item to make the modifications take effect.  The
-modifications will be forgotten next time you run emacs.
-
-@item Save
-Unless you activate this item instead!  This will mark the modification
-as permanent, i.e. the changes will be remembered in the next emacs
-session.
-
-@item Reset
-If you have made some modifications and not yet applied them, you can
-undo the modification by activating this item.
-
-@item Reset to Saved
-Activating this item will reset the value of the variable to the last
-value you marked as permanent with `Save'.
-
-@item Reset to Standard Settings
-Activating this item will undo all modifications you have made, and
-reset the value to the initial value specified by the program itself. 
-@end table
-
-By default, the value of large or complicated variables are hidden.
-You can change this with the @samp{Hide} and @samp{Show} entries in the
-state menu.
-
-@node  The Face Options, The Group Options, The Variable Options, The Customization Buffer
-@comment  node-name,  next,  previous,  up
-@subsection The Face Options
-
-A face is an object that controls the appearance of some buffer text.
-The face has a number of possible attributes, such as boldness,
-foreground color, and more.  For each attribute you can specify whether
-this attribute is controlled by the face, and if so, what the value is.
-For example, if the attribute bold is not controlled by a face, using
-that face on some buffer text will not affect its boldness.  If the bold
-attribute is controlled by the face, it can be turned either on or of.
-
-It is possible to specify that a face should have different attributes
-on different device types.  For example, a face may make text red on a
-color device, and bold on a monochrome device.  You do this by
-activating `Edit All' in the state menu.
-
-The way this is presented in the customization buffer is to have a list
-of display specifications, and for each display specification a list of
-face attributes.  For each face attribute, there is a checkbox
-specifying whether this attribute has effect and what the value is.
-Here is an example:
-
-@example
- Custom Invalid Face: (sample)
- State: this item is unchanged from its standard setting.
- Face used when the customize item is invalid.
- [INS] [DEL] Display: [ ] Type: [ ] X [ ] PM [ ] Win32 [ ] DOS [ ] TTY
-                      [X] Class: [X] Color [ ] Grayscale [ ] Monochrome
-                      [ ] Background: [ ] Light [ ] Dark
-             Attributes: [ ] Bold: off 
-                         [ ] Italic: off 
-                         [ ] Underline: off 
-                         [X] Foreground: yellow (sample)
-                         [X] Background: red (sample)
-                         [ ] Stipple:  
- [INS] [DEL] Display: all
-             Attributes: [X] Bold: on 
-                         [X] Italic: on 
-                         [X] Underline: on 
-                         [ ] Foreground: default (sample)
-                         [ ] Background: default (sample)
-                         [ ] Stipple:  
- [INS]
-@end example
-
-This has two display specifications.  The first will match all color
-displays, independently on what window system the device belongs to, and
-whether background color is dark or light.  For devices matching this
-specification, @samp{Custom Invalid Face} will force text to be
-displayed in yellow on red, but leave all other attributes alone.
-
-The second display will simply match everything.  Since the list is
-prioritised, this means that it will match all non-color displays.  For
-these, the face will not affect the foreground or background color, but
-force the font to be both bold, italic, and underline.
-
-You can add or delete display specifications by activating the
-@samp{[INS]} and @samp{[DEL]} buttons, and modify them by clicking on
-the check boxes.  The first checkbox in each line in the display
-specification is special.  It specify whether this particular property
-will even be relevant.  By not checking the box in the first display, we
-match all device types, also device types other than those listed.
-
-After modifying the face, you can activate the state button to make the
-changes take effect.  The menu items in the state button menu is similar
-to the state menu items for variables described in the previous section.
-
-Faces usually start out hidden, activate the @samp{State} button to show
-them.
-
-@node  The Group Options, The State Button, The Face Options, The Customization Buffer
-@comment  node-name,  next,  previous,  up
-@subsection The Group Options
-
-Since Emacs has approximately a zillion configuration options, they have
-been organized in groups.  Each group can contain other groups, thus
-creating a customization hierarchy.  The nesting of the customization
-within the visible part of this hierarchy is indicated by the number of
-asterisks before the name of the group.
-
-Since there is really no customization needed for the group itself, the
-menu items in the groups state button will affect all modified group
-members recursively.  Thus, if you activate the @samp{Set} menu item,
-all variables and faces that have been modified and belong to that group
-will be applied.  For those members that themselves are groups, it will
-work as if you had activated the @samp{Set} menu item on them as well.
-
-@node  The State Button,  , The Group Options, The Customization Buffer
-@comment  node-name,  next,  previous,  up
-@subsection The State Line and The Magic Button
-
-The state line has two purposes.  The first is to hold the state menu,
-as described in the previous sections.  The second is to indicate the
-state of each customization item.  
-
-There is an optional `magic button' that holds the same information in a
-more compact form.  The magic button contain a character inside the
-brackets (in edit mode) or parentheses (in lisp mode).  
-
-@defopt custom-magic-show-button
-Show a magic button indicating the state of each customization option.
-@end defopt
-
-The following states have been defined, the first that applies to the
-current item will be used:
-
-@table @samp
-@item -
-The option is currently hidden.  For group options that means the
-members are not shown, for variables and faces that the value is not
-shown.  You cannot perform any of the state change operations on a
-hidden customization option.
-
-@item *
-The value if this option has been modified in the buffer, but not yet
-applied.  
-
-@item +
-The item has has been set by the user.
-
-@item :
-The current value of this option is different from the saved value.   
-
-@item !
-The saved value of this option is different from the standard setting.
-
-@item @@
-The standard setting of this option is not known.  This occurs when you
-try to customize variables or faces that have not been explicitly
-declared as customizable.
-
-@item SPC
-The standard setting is still in effect.
-
-@end table
-
-For non-hidden group options, the state shown is the most severe state
-of its members, where more severe means that it appears earlier in the
-list above (except hidden members, which are ignored).
-
-@node   Declarations, Utilities, The Customization Buffer, Top
-@comment  node-name,  next,  previous,  up
-@section Declarations
-
-This section describes how to declare customization groups, variables,
+This manual describes how to declare customization groups, variables,
 and faces.  It doesn't contain any examples, but please look at the file
 @file{cus-edit.el} which contains many declarations you can learn from.
 
@@ -453,6 +22,9 @@
 * Declaring Variables::         
 * Declaring Faces::             
 * Usage for Package Authors::   
+* Utilities::                   
+* The Init File::               
+* Wishlist::                    
 @end menu
 
 All the customization declarations can be changes by keyword arguments.
@@ -479,9 +51,9 @@
 automatically created from the options name.
 @end table
 
-@node  Declaring Groups, Declaring Variables, Declarations, Declarations
+@node Declaring Groups, Declaring Variables, Top, Top
 @comment  node-name,  next,  previous,  up
-@subsection Declaring Groups
+@section Declaring Groups
 
 Use @code{defgroup} to declare new customization groups. 
 
@@ -511,9 +83,9 @@
 @end table
 @end defun
 
-@node  Declaring Variables, Declaring Faces, Declaring Groups, Declarations
+@node Declaring Variables, Declaring Faces, Declaring Groups, Top
 @comment  node-name,  next,  previous,  up
-@subsection Declaring Variables
+@section Declaring Variables
 
 Use @code{defcustom} to declare user editable variables.
 
@@ -527,7 +99,7 @@
 The following additional @var{keyword}'s are defined:
 
 @table @code
-@item :type	
+@item :type     
 @var{value} should be a widget type.
 
 @item :options
@@ -594,9 +166,9 @@
 member.  For other types variables, the effect is undefined."
 @end defun
 
-@node  Declaring Faces, Usage for Package Authors, Declaring Variables, Declarations
+@node Declaring Faces, Usage for Package Authors, Declaring Variables, Top
 @comment  node-name,  next,  previous,  up
-@subsection Declaring Faces
+@section Declaring Faces
 
 Faces are declared with @code{defface}.
 
@@ -646,9 +218,9 @@
 
 @end defun
 
-@node Usage for Package Authors,  , Declaring Faces, Declarations
+@node Usage for Package Authors, Utilities, Declaring Faces, Top
 @comment  node-name,  next,  previous,  up
-@subsection Usage for Package Authors
+@section Usage for Package Authors
 
 The recommended usage for the author of a typical emacs lisp package is
 to create one group identifying the package, and make all user options
@@ -662,7 +234,7 @@
 keywords, and add you group to each of them, using the @code{:group}
 keyword. 
 
-@node  Utilities, The Init File, Declarations, Top
+@node  Utilities, The Init File, Usage for Package Authors, Top
 @comment  node-name,  next,  previous,  up
 @section Utilities
 
@@ -694,7 +266,7 @@
 The menu is in a format applicable to @code{easy-menu-define}.
 @end defun
 
-@node  The Init File, Wishlist, Utilities, Top
+@node The Init File, Wishlist, Utilities, Top
 @comment  node-name,  next,  previous,  up
 @section The Init File
 
@@ -705,7 +277,7 @@
 The two functions will initialize variables and faces as you have
 specified.
 
-@node  Wishlist,  , The Init File, Top
+@node Wishlist,  , The Init File, Top
 @comment  node-name,  next,  previous,  up
 @section Wishlist
 
@@ -714,7 +286,7 @@
 Better support for keyboard operations in the customize buffer.
 
 @item
-Integrate with @file{w3} so you can customization buffers with much
+Integrate with @file{w3} so you can get customization buffers with much
 better formatting.  I'm thinking about adding a <custom>name</custom>
 tag.  The latest w3 have some support for this, so come up with a
 convincing example.
@@ -750,7 +322,8 @@
 @samp{<jens@@lemming0.lem.uni-karlsruhe.de>}.@refill
 
 @item
-Empty customization groups should start open (harder than it looks).
+Explain why it is necessary that all choices have differnet default
+values.
 
 @item
 Make it possible to include a comment/remark/annotation when saving an
@@ -793,14 +366,25 @@
 Detect when faces have been changed outside customize.
 
 @item
-Activate mouse help in Emacs by default.
-
-@item
-Group members should be sorted, groups last.
+Enable mouse help in Emacs by default.
 
 @item
 Add an easy way to display the standard settings when an item is modified.
 
+@item
+Option or command to create new buffer instead of expanding a group
+inline. 
+
+@item
+See if it is feasible to scan files for customization information
+instead of loading them, 
+
+@item
+Add hint message when user push a non-pushable tag.
+
+Suggest that the user unhide if hidden, and edit the value directly
+otherwise.
+
 @end itemize
 
 @contents