Ordinary Lisp variables can be assigned any value that is a valid Lisp object. However, certain Lisp variables are not defined in Lisp, but in C. Most of these variables are defined in the C code using DEFVAR_LISP
. Like variables defined in Lisp, these can take on any value. However, some variables are defined using DEFVAR_INT
or DEFVAR_BOOL
. See Writing Emacs Primitives, in particular the description of functions of the type syms_of_filename
, for a brief discussion of the C implementation.
Variables of type DEFVAR_BOOL
can only take on the values nil
or t
. Attempting to assign them any other value will set them to t
:
(let ((display-hourglass 5)) display-hourglass) ⇒ t
This variable holds a list of all variables of type DEFVAR_BOOL
.
Variables of type DEFVAR_INT
can take on only integer values. Attempting to assign them any other value will result in an error:
(setq undo-limit 1000.0) error→ Wrong type argument: integerp, 1000.0
Copyright © 1990-1996, 1998-2019 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Variables-with-Restricted-Values.html