49.2 Variables
A variable is a Lisp symbol which has a value. The symbol’s name is also called the variable name. A variable name can contain any characters that can appear in a file, but most variable names consist of ordinary words separated by hyphens.
The name of the variable serves as a compact description of its
role. Most variables also have a documentation string, which
describes what the variable’s purpose is, what kind of value it should
have, and how the value will be used. You can view this documentation
using the help command C-h v
( describe-variable
).
See Examining and Setting Variables.
Emacs uses many Lisp variables for internal record keeping, but the most interesting variables for a non-programmer user are those meant for users to change—these are called customizable variables or user options (see Easy Customization Interface). In the following sections, we will describe other aspects of Emacs variables, such as how to set them outside Customize.
Emacs Lisp allows any variable (with a few exceptions) to have any
kind of value. However, many variables are meaningful only if
assigned values of a certain type. For example, only numbers are
meaningful values for kill-ring-max
, which specifies the
maximum length of the kill ring (see Yanking Earlier Kills); if you give
kill-ring-max
a string value, commands such as C-y
( yank
) will signal an error. On the other hand, some variables
don’t care about type; for instance, if a variable has one effect for
nil
values and another effect for non- nil
values,
then any value that is not the symbol nil
induces the second
effect, regardless of its type (by convention, we usually use the
value t
—a symbol which stands for “true”—to specify a
non- nil
value). If you set a variable using the customization
buffer, you need not worry about giving it an invalid type: the
customization buffer usually only allows you to enter meaningful
values. When in doubt, use C-h v
( describe-variable
) to
check the variable’s documentation string to see what kind of value it
expects (see Examining and Setting Variables).