elisp: Variables with Restricted Values
11.14 Variables with Restricted Values
======================================
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’. Writing Emacs Primitives Defining Lisp variables
in C, 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
-- Variable: byte-boolean-vars
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