Previous: Creating Buffer-Local, Up: Buffer-Local Variables


10.10.3 バッファローカル変数のデフォルト値

バッファローカルな束縛がある変数のグローバル値を、 デフォルト値とも呼びます。 カレントバッファや選択したフレームに変数の独自の束縛がない場合に、 グローバル値を使うからです。

関数default-valueと関数setq-defaultは、 カレントバッファにバッファローカルな束縛があるかどうかに関わらず、 変数のデフォルト値を参照したり変更したりします。 たとえば、setq-defaultを使って、 ほとんどのバッファのparagraph-startのデフォルト値を変更できます。 この変数のバッファローカルな値があるCモードやLispモードのバッファで 行ってもこれは動作します。

スペシャルフォームdefvardefconstも、 バッファローカルやフレームローカルな値ではなく、 (変数に設定する場合には)デフォルト値を設定します。

— Function: default-value symbol

この関数は、symbolのデフォルト値を返す。 この値は、この変数に対して独自の値を持たないバッファやフレームで見える 値である。 symbolがバッファローカルでなければ、 これは、symbol-value(see Accessing Variables)と等価。

— Function: default-boundp symbol

関数default-boundpは、 symbolのデフォルト値が空でないことを調べる。 (default-boundp 'foo)nilを返せば、 (default-value 'foo)はエラーになる。

default-boundpは、boundpsymbol-valueに対応するように、 default-valueに対応する。

— Special Form: setq-default [symbol form]...

このスペシャルフォームは、各symbolに、 対応するformの評価結果である新たなデフォルト値を与える。 symbolは評価しないが、formは評価する。 フォームsetq-defaultの値は、最後のformの値である。

symbolがカレントバッファでバッファローカルではなく、かつ、 自動的にバッファローカルにする印が付いていなければ、 setq-defaultsetqと同じ効果がある。 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
— Function: set-default symbol value

この関数はsetq-defaultに似ているが、 symbolは普通どおりに評価される引数である。

          (set-default (car '(a b c)) 23)
               ⇒ 23
          (default-value 'a)
               ⇒ 23