通常のLisp変数には、有効なLispオブジェクトである任意の値を割り当てることができます。しかしLispではなくCで定義されたLisp変数もあります。これらの変数のほとんどは、DEFVAR_LISP
を使用してCコードで定義されています。Lispで定義された変数と同様、これらは任意の値をとることができます。しかしいくつかの変数はDEFVAR_INT
やDEFVAR_BOOL
を使用して定義されています。C実装の概要的な議論は、Writing Emacs
Primitives、特にsyms_of_filename
型の関数の説明を参照してください。
DEFVAR_BOOL
型の変数は、値にnil
かt
しかとることができません。他の値の割り当てを試みるとt
がセットされます:
(let ((display-hourglass 5)) display-hourglass) ⇒ t
この変数はDEFVAR_BOOL
型のすべての変数のリストを保持する。
DEFVAR_INT
型の変数は、整数値だけをとることができます。他の値の割り当てを試みると結果はエラーになります:
(setq undo-limit 1000.0) error→ Wrong type argument: integerp, 1000.0