8.2.2 Generic Sexp Widget

The sexp widget can contain any Lisp expression, and allows the user to edit it inline in the buffer.

The syntax for the sexp widget is:

type ::= (sexp [keyword argument]...  [ value ])
Widget: sexp

This widget represents an editable field that’s useful to edit any valid s-expression.

The sexp widget takes the same keyword arguments as the editable-field widget. See The editable-field Widget.

Its default value is nil.

Widget: restricted-sexp

A widget to edit Lisp expressions restricted to certain values or types. Its super is the sexp widget.

It works just like the sexp widget, but it overrides the :match function to match for certain values. To use this widget, either you must define a :match function or give a :match-alternatives property. The :match-alternatives property holds a list of predicate functions to call when checking if a given value matches the widget. Each predicate function will be called with one argument, the value to be matched, and should return non-nil on success.

As an example, the integer widget overrides :match-alternatives to (integerp).