Previous: Creating Buffer-Local, Up: Buffer-Local Variables [Contents][Index]
バッファーローカルなバインディングをもつ変数のグローバル値もデフォルト値(default)値と呼ばれます。なぜならその変数にたいしてカレントバッファーや選択されたフレームもバインディングをもたなければ、その値が常に効果をもつからです。
関数default-value
とsetq-default
は、カレントバッファーがバッファーローカルなバインディングをもつかどうかに関わらず、その変数のデフォルト値にアクセスまたは変更します。たとえばほとんどのバッファーにたいして、paragraph-start
のデフォルトのセッティングを変更するために、setq-default
を使用できます。そしてこの変数にたいするバッファーローカルな値をもつCモードやLispモードにいるときでさえ、これは機能します。
スペシャルフォームdefvar
とdefconst
もバッファーローカルな値ではなく、(もし変数にセットする場合は)デフォルト値をセットします。
この関数はsymbolのデフォルト値をリターンする。これはこの変数にたいして独自の値をもたないバッファーやフレームから参照される値である。symbolがバッファーローカルでなければ、これはsymbol-value
(Accessing Variablesを参照)と同じ。
関数default-boundp
はsymbolのデフォルト値がvoidでないか報告する。(default-boundp
'foo)
がnil
をリターンした場合には(default-value 'foo)
はエラーになる。
default-boundp
はdefault-value
、boundp
はsymbol-value
にたいする述語である。
このスペシャルフォームは各symbolに新たなデフォルト値として、対応するformを評価した結果を与える。これはsymbolを評価しないがformは評価する。setq-default
フォームの値は最後のformの値。
カレントバッファーにたいしてsymbolがバッファーローカルでなく、自動的にバッファーローカルにマークされていなければ、setq-default
はsetq
と同じ効果をもつ。カレントバッファーにたいしてsymbolがバッファーローカルなら、(バッファーローカルな値をもたない)他のバッファーから参照できる値を変更するが、それはカレントバッファーが参照する値ではない。
;; バッファー‘foo’で行う:
(make-local-variable 'buffer-local)
⇒ buffer-local
(setq buffer-local 'value-in-foo) ⇒ value-in-foo
(setq-default buffer-local 'new-default) ⇒ new-default
buffer-local ⇒ value-in-foo
(default-value 'buffer-local) ⇒ new-default
;; (新しい)バッファー‘bar’で行う:
buffer-local
⇒ new-default
(default-value 'buffer-local) ⇒ new-default
(setq buffer-local 'another-default) ⇒ another-default
(default-value 'buffer-local) ⇒ another-default
;; バッファー‘foo’に戻って行う:
buffer-local
⇒ value-in-foo
(default-value 'buffer-local)
⇒ another-default
この関数はsetq-default
と似ているが、symbolは通常の引数として評価される。
(set-default (car '(a b c)) 23) ⇒ 23
(default-value 'a) ⇒ 23