8.1.21 The checklist Widget


type ::= (checklist [keyword argument]...  type ... )

A widget to represent a multiplice choice. Its super is the default widget.

The type arguments represent each checklist item. The widget’s value will be a list containing the values of all checked type arguments.


(widget-create 'checklist
               :notify (lambda (widget child &optional _event)
                           (widget-value (widget-get-sibling child))
               :value (list 'tool-bar-mode 'menu-bar-mode)
               '(item :tag "Tool-bar" tool-bar-mode)
               '(item :tag "Menu-bar" menu-bar-mode))))

It either overrides or adds the following properties:


As other composite widgets, a function that takes care of converting each checklist item.


A function to copy each checklist item.


By default, it inserts its value.


This string will be inserted for each entry in the list. The following ‘%’ escapes are available:


Replaced with the buffer representation of the type widget.


Replace with the checkbox.


Insert a literal ‘%’.


A list of keywords to pass to the checkboxes. Useful for setting, e.g., the ‘:help-echo’ for each checkbox.


The widgets representing the checkboxes.


The widgets representing each type.


The list of types.


The function that takes care of inserting all values.


A function that returns all values of selected items.


A function that ensures all selected children are valid.


The checklist widget will match a list whose elements all match at least one of the specified type arguments.


Like the :match function, but taking into account the :inline property.


Usually a checklist will only match if the items are in the exact sequence given in the specification. By setting :greedy to non-nil, it will allow the items to come in any sequence. However, if you extract the value they will be in the sequence given in the checklist, i.e., the original sequence is forgotten.