15.4.1 Simple Types

This section describes all the simple customization types. For several of these customization types, the customization widget provides inline completion with C-M-i or M-TAB.

sexp

The value may be any Lisp object that can be printed and read back. You can use sexp as a fall-back for any option, if you don’t want to take the time to work out a more specific type to use.

integer

The value must be an integer.

natnum

The value must be a nonnegative integer.

number

The value must be a number (floating point or integer).

float

The value must be floating point.

string

The value must be a string. The customization buffer shows the string without delimiting ‘"’ characters or ‘\’ quotes.

regexp

Like string except that the string must be a valid regular expression.

character

The value must be a character code. A character code is actually an integer, but this type shows the value by inserting the character in the buffer, rather than by showing the number.

file

The value must be a file name. The widget provides completion.

(file :must-match t)

The value must be a file name for an existing file. The widget provides completion.

directory

The value must be a directory. The widget provides completion.

hook

The value must be a list of functions. This customization type is used for hook variables. You can use the :options keyword in a hook variable’s defcustom to specify a list of functions recommended for use in the hook; See Defining Customization Variables.

symbol

The value must be a symbol. It appears in the customization buffer as the symbol name. The widget provides completion.

function

The value must be either a lambda expression or a function name. The widget provides completion for function names.

variable

The value must be a variable name. The widget provides completion.

face

The value must be a symbol which is a face name. The widget provides completion.

boolean

The value is boolean—either nil or t. Note that by using choice and const together (see the next section), you can specify that the value must be nil or t, but also specify the text to describe each value in a way that fits the specific meaning of the alternative.

key

The value is a valid key according to key-valid-p, and suitable for use with, for example keymap-set.

key-sequence

The value is a key sequence. The customization buffer shows the key sequence using the same syntax as the kbd function. See Key Sequences. This is a legacy type; use key instead.

coding-system

The value must be a coding-system name, and you can do completion with M-TAB.

color

The value must be a valid color name. The widget provides completion for color names, as well as a sample and a button for selecting a color name from a list of color names shown in a *Colors* buffer.

fringe-bitmap

The value must be a valid fringe bitmap name. The widget provides completion.