バッファローカルな束縛がある変数のグローバル値を、 デフォルト値とも呼びます。 カレントバッファや選択したフレームに変数の独自の束縛がない場合に、 グローバル値を使うからです。
関数default-value
と関数setq-default
は、
カレントバッファにバッファローカルな束縛があるかどうかに関わらず、
変数のデフォルト値を参照したり変更したりします。
たとえば、setq-default
を使って、
ほとんどのバッファのparagraph-start
のデフォルト値を変更できます。
この変数のバッファローカルな値があるCモードやLispモードのバッファで
行ってもこれは動作します。
スペシャルフォームdefvar
やdefconst
も、
バッファローカルやフレームローカルな値ではなく、
(変数に設定する場合には)デフォルト値を設定します。
この関数は、symbolのデフォルト値を返す。 この値は、この変数に対して独自の値を持たないバッファやフレームで見える 値である。 symbolがバッファローカルでなければ、 これは、
symbol-value
(see Accessing Variables)と等価。
関数
default-boundp
は、 symbolのデフォルト値が空でないことを調べる。(default-boundp 'foo)
がnil
を返せば、(default-value 'foo)
はエラーになる。
default-boundp
は、boundp
がsymbol-value
に対応するように、default-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