Previous: Specifying File Variables, Up: File Variables [Contents][Index]
ファイルローカル変数が危険な場合もあります。他の誰かのファイルをvisitするとき、そのファイルのローカル変数リストがEmacsに何を行なうか、告げるものはありません。eval
“variable”や、その他のload-path
などにたいする不正な値は、実行する意図がないLispコードを実行するかもしれません。
したがって、安全と判っていないファイルローカル変数を発見した場合、Emacsはファイルのローカル変数リスト全体を表示して、それらをセットする前に継続するか尋ねます。yまたはSPCをタイプすると、ローカル変数リストは効果をもち、nの場合は無視します。Emacsがバッチモード(Initial Optionsを参照してください)で実行されている場合、Emacsは確認することができないので、nと応えられたとみなします。
Emacsは通常、特定の変数/値ペアーが安全だと認識できます。たとえばcomment-column
やfill-column
には、任意の整数値を与えても安全です。ファイルが安全だと判っている変数/値ペアーだけを指定する場合、Emacsはそれらをセットする前に確認を求めません。そうでない場合、確認プロンプトで!とタイプすることにより、このファイル内のすべての変数/値ペアーが安全なことを記録するようEmacsに指示できます。その後、Emacsが同じファイルまたは別のファイルで、これらの変数/値ペアーに出会うと、これらを安全だとみなします。
load-path
のようないくつかの変数は、特に危険だと判断されます。これらをローカル変数として指定すべき理由はほとんどなく、それらを変更するのは危険です。ファイルに危険なローカル変数だけが含まれる場合、Emacsは確認プロンプトで!の選択肢を提示することも、それを受け入れることもしません。ファイル内のいくつかのローカル変数が危険で、いくつかの変数は潜在的に安全ではない場合は、プロンプトで!を入力できます。これはすべての変数に適用されますが、危険ではない変数だけを将来のセッションのために安全とマークします。もし危険な変数を安全な値として記録したいと本当に望むなら、‘safe-local-variable-values’をカスタマイズすることによりこれを行ないます(Easy Customizationを参照してください)。
変数enable-local-variables
により、Emacsがローカル変数を処理する方法を変更できます。デフォルト値はt
で、これは上述の振る舞いを指定します。nil
の場合、Emacsは単にすべてのファイルローカル変数を無視します。:safe
は安全な値だけを使用して、残りは無視します。他の値の場合、安全と判っている値かどうかの決定を試みずに、ローカル変数をもつ各ファイルごとに尋ねます。
変数enable-local-eval
は、Emacsがeval
変数を処理するかどうかを制御します。enable-local-variables
のように、変数に対する可能な値は3つで、t
、nil
、およびそれ以外です。デフォルトは、t
やnil
ではないmaybe
で、通常Emacsはeval
変数を処理するときに確認を求めます。
例外として、評価する任意のeval
形式が、変数safe-local-eval-forms
で指定された形式の場合、Emacsは確認を求めません。