defvar-local

Title
defvar-local
Type
Macro
Arguments
defvar-local NAME INITIAL-VALUE &optional DOC
Package
editor
Section
変数と定数
File
misc.l
変数NAMEがバッファ毎に異なる値を持つようにします。関連する関数として、
defvar/make-local-variable等がありますが、それぞれ機能が異なります。
defvar-localはdefvarと異なり、スペシャル変数とはならないので注意が必要です。

  defvar              : スペシャル変数を作る。
  defvar-local        : 全バッファで変数が独自の値を持つようにする。
  make-local-variable : 特定のバッファで変数が独自の値を持つようにする。

また、defvar-localだけではその変数はローカル変数にはならないようです。バ
ッファでsetqをして初めてローカルになる(local-variable-pがtになる)よう
です。

使用例:
  ;;; defvarとdefvar-localを使ってダイナミックかレキシカルかを確認する。
  (defvar var 3)
  => var  
  (defvar-local var-local 3)
  => var-local
  
  (defun foo () (let ((var 4) (var-local 4)) (bar)))
  => foo
  (defun bar () (format nil "var : ~S, var-local : ~S" var var-local))
  => bar
  
  (foo)
  => "var : 4, var-local : 3"
(defvar-local *dabbrevs-case-fold* nil)
Seealso
make-local-variable
setq-default
local-variable-p
buffer-local-value
defvar