A variable is a Lisp symbol which has a value. The symbol's
name is also called the name of the variable. A variable name can
contain any characters that can appear in a file, but conventionally
variable names consist of words separated by hyphens. A variable can
have a documentation string which describes what kind of value it should
have and how the value will be used.
Emacs Lisp allows any variable (with a few exceptions) to have any
kind of value, but most variables that Emacs uses need a value of a
certain type. Often the value should always be a string, or should
always be a number. Sometimes we say that a certain feature is turned
on if a variable is “non-
nil,” meaning that if the variable's
nil, the feature is off, but the feature is on for
any other value. The conventional value to use to turn on the
feature—since you have to pick one particular value when you set the
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—the user options.
Each user option that you can set with the customization buffer is
in fact a Lisp variable. Emacs does not (usually) change the values
of these variables; instead, you set the values, and thereby alter and
control the behavior of certain Emacs commands. Use of the
customization buffer is explained above (see Easy Customization);
here we describe other aspects of Emacs variables.