emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lispref/customize.texi


From: Richard M. Stallman
Subject: [Emacs-diffs] Changes to emacs/lispref/customize.texi
Date: Tue, 23 Jul 2002 15:19:33 -0400

Index: emacs/lispref/customize.texi
diff -c emacs/lispref/customize.texi:1.25 emacs/lispref/customize.texi:1.26
*** emacs/lispref/customize.texi:1.25   Sun Mar 24 19:43:10 2002
--- emacs/lispref/customize.texi        Tue Jul 23 15:19:32 2002
***************
*** 578,619 ****
  
  @node Composite Types
  @subsection Composite Types
  
    When none of the simple types is appropriate, you can use composite
! types, which build new types from other types.  Here are several ways of
! doing that:
! 
! @table @code
! @item (restricted-sexp :match-alternatives @var{criteria})
! The value may be any Lisp object that satisfies one of @var{criteria}.
! @var{criteria} should be a list, and each element should be
! one of these possibilities:
! 
! @itemize @bullet
! @item
! A predicate---that is, a function of one argument that has no side
! effects, and returns either @code{nil} or address@hidden according to
! the argument.  Using a predicate in the list says that objects for which
! the predicate returns address@hidden are acceptable.
! 
! @item
! A quoted constant---that is, @code{'@var{object}}.  This sort of element
! in the list says that @var{object} itself is an acceptable value.
! @end itemize
! 
! For example,
  
  @example
! (restricted-sexp :match-alternatives
!                  (integerp 't 'nil))
  @end example
  
  @noindent
! allows integers, @code{t} and @code{nil} as legitimate values.
  
! The customization buffer shows all legitimate values using their read
! syntax, and the user edits them textually.
  
  @item (cons @var{car-type} @var{cdr-type})
  The value must be a cons cell, its @sc{car} must fit @var{car-type}, and
  its @sc{cdr} must fit @var{cdr-type}.  For example, @code{(cons string
--- 578,606 ----
  
  @node Composite Types
  @subsection Composite Types
+ @cindex arguments (of composite type)
  
    When none of the simple types is appropriate, you can use composite
! types, which build new types from other types or from specified data.
! The specified types or data are called the @dfn{arguments} of the
! composite type.  The composite type normally looks like this:
  
  @example
! (@var{constructor} @address@hidden)
  @end example
  
  @noindent
! but you can also add keyword-value pairs before the arguments, like
! this:
  
! @example
! (@var{constructor} @address@hidden@var{keyword} 
@address@hidden@address@hidden @address@hidden)
! @end example
! 
!   Here is a table of constructors and how to use them to write
! composite types:
  
+ @table @code
  @item (cons @var{car-type} @var{cdr-type})
  The value must be a cons cell, its @sc{car} must fit @var{car-type}, and
  its @sc{cdr} must fit @var{cdr-type}.  For example, @code{(cons string
***************
*** 761,766 ****
--- 748,805 ----
  @var{element-type}.  This appears in the customization buffer as a
  list of elements, with @samp{[INS]} and @samp{[DEL]} buttons for adding
  more elements or removing elements.
+ 
+ @item (restricted-sexp :match-alternatives @var{criteria})
+ This is the most general composite type construct.  The value may be
+ any Lisp object that satisfies one of @var{criteria}.  @var{criteria}
+ should be a list, and each element should be one of these
+ possibilities:
+ 
+ @itemize @bullet
+ @item
+ A predicate---that is, a function of one argument that has no side
+ effects, and returns either @code{nil} or address@hidden according to
+ the argument.  Using a predicate in the list says that objects for which
+ the predicate returns address@hidden are acceptable.
+ 
+ @item
+ A quoted constant---that is, @code{'@var{object}}.  This sort of element
+ in the list says that @var{object} itself is an acceptable value.
+ @end itemize
+ 
+ For example,
+ 
+ @example
+ (restricted-sexp :match-alternatives
+                  (integerp 't 'nil))
+ @end example
+ 
+ @noindent
+ allows integers, @code{t} and @code{nil} as legitimate values.
+ 
+ The customization buffer shows all legitimate values using their read
+ syntax, and the user edits them textually.
+ @end table
+ 
+   Here is a table of the keywords you can use in keyword-value pairs
+ in a composite type:
+ 
+ @table @code
+ @item :tag @var{tag}
+ Use @var{tag} as the name of this alternative, for user communication
+ purposes.  This is useful for a type that appears inside of a
+ @code{choice}.
+ 
+ @item :match-alternatives @var{criteria}
+ Use @var{criteria} to match possible values.  This is used only in
+ @code{restricted-sexp}.
+ 
+ @item :args @var{argumentlist}
+ Use the elements of @var{argumentlist} as the arguments of the type
+ construct.  For instance, @code{(const :args (foo))} is equivalent to
+ @code{(const foo)}.  You rarely need to write @code{:args} explicitly,
+ because normally the arguments are recognized automatically as
+ whatever follows the last keyword-value pair.
  @end table
  
  @node Splicing into Lists



reply via email to

[Prev in Thread] Current Thread [Next in Thread]