Go to the first, previous, next, last section, table of contents.

ローカル変数

M-x make-local-variable
カレントバッファで変数の値をローカルにします.
M-x kill-local-variable
カレントバッファで変数の値をグローバルにします.
M-x make-variable-buffer-local
値が変えられたときに,そのときのカレントバッファにローカルになるような変 数にします.

どんな変数もEmacsの特定のバッファにローカルにすることができます.つま りその変数のあるバッファでの値は,他のバッファでの値と独立にできます.す べてのバッファでいつもローカルであるような変数もいくつかあります.それ以 外のすべてのEmacs変数は,ローカルでないすべてのバッファで有効になる グローバル値を持ちます.

主モードは,バッファに対してローカルな変数を作ります.よって1つのバッ ファで主モードを変えても,他のバッファに影響はありません.

M-x make-local-variableは変数の名を読みとってそれをカレントバッ ファに対してローカルにします.このバッファでさらに変更しても他のバッファ には影響しませんし,またグローバル値が変わってもこのバッファには影響しま せん.

M-x make-variable-buffer-localは変数名を読みとって,その変数に値 が設定されたときに自動的にローカルになるような性質を変数に与えます.正確 には,このような性質を持った変数を通常の方法で変数に値を設定すると,はじ めに自動的にmake-local-variableが行なわれます.このような変数を バッファ固有の変数といいます.

いくつかの重要な変数は,はじめからバッファに固有な変数になっています. それは,abbrev-modeauto-fill-hookcase-fold-searchcomment-columnctl-arrowfill-columnfill-prefixindent-tabs-modeleft-marginmode-line-formatoverwrite-modeselective-display-ellipsesselective-displaytab-widthtruncate-linesです.他の変数はすべてのバッファ で常にローカルです.ただしそれは内部的に使用しているものです.

M-x kill-local-variableは,変数の名を読みとってそれをカレントバッ ファのローカルではないようにします.以降はその変数のグローバル値がこのバッ ファでも使われます.主モードを設定すると,そのバッファでローカルだった変 数は,すべてグローバルに変えられます.

変数がカレントバッファにローカルな値を持っているかに関わらず,変数にグ ローバルな値を設定するにはLisp関数setq-defaultを使います.これは setqと同じように動作します.もしカレントバッファにローカルな値が 設定されていると,ローカルな値はsetq-defaultでは変更されません. よって,新しく設定したグローバル値は他のバッファに切替えるまで効果を持ち ません.たとえば次のように使います.

(setq-default fill-column 75)

make-variable-buffer-localでバッファ固有にした変数のグローバル値 を変えられるのはsetq-defaultだけです.

プログラム内ではdefault-valueを使って変数のデフォルト値の参照が できます.この関数はシンボルを引数として,そのデフォルト値を返します.引 数は評価されるので普通は陽にクォートをつけてください.たとえば次のように 使います.

(default-value 'fill-column)

Go to the first, previous, next, last section, table of contents.