GNU Info

Info Node: (widget)composite

(widget)composite


Prev: atoms Up: Sexp Types
Enter node , (file) or (file)node

Composite Sexp Widgets
----------------------

   The syntax for the composite widget is:

     TYPE ::= (NAME [KEYWORD ARGUMENT]...  COMPONENT...)

where each COMPONENT must be a widget type.  Each component widget will
be displayed in the buffer, and will be editable by the user.

 - Widget: cons
     The value of a `cons' widget is a cons-cell where the `car' is the
     value of the first component and the `cdr' is the value of the
     second component.  There must be exactly two components.

 - Widget: list
     The value of a `list' widget is a list containing the value of
     each of its component.

 - Widget: vector
     The value of a `vector' widget is a vector containing the value of
     each of its component.

   The above suffice for specifying fixed size lists and vectors.  To
get variable length lists and vectors, you can use a `choice', `set',
or `repeat' widgets together with the `:inline' keywords.  If any
component of a composite widget has the `:inline' keyword set, its
value must be a list which will then be spliced into the composite.
For example, to specify a list whose first element must be a file name,
and whose remaining arguments should either by the symbol `t' or two
files, you can use the following widget specification:

     (list file
           (choice (const t)
                   (list :inline t
                         :value ("foo" "bar")
                         string string)))

   The value of a widget of this type will either have the form `(file
t)' or `(file string string)'.

   This concept of inline is probably hard to understand.  It was
certainly hard to implement, so instead of confusing you more by trying
to explain it here, I'll just suggest you meditate over it for a while.

 - Widget: choice
     Allows you to edit a sexp which may have one of a fixed set of
     types.  It is currently implemented with the `choice-menu' basic
     widget, and has a similar syntax.

 - Widget: set
     Allows you to specify a type which must be a list whose elements
     all belong to given set.  The elements of the list are not
     significant.  This is implemented on top of the `checklist' basic
     widget, and has a similar syntax.

 - Widget: repeat
     Allows you to specify a variable length list whose members are all
     of the same type.  Implemented on top of the `editable-list' basic
     widget, and has a similar syntax.


automatically generated by info2www version 1.2.2.9