Previous: , Up: File Variables   [Contents][Index]


48.2.4.2 安全なファイル変数

ファイルローカル変数が危険な場合もあります。他の誰かのファイルをvisitするとき、そのファイルのローカル変数リストがEmacsに何を行なうか、告げるものはありません。eval “variable”や、その他のload-pathなどにたいする不正な値は、実行する意図がないLispコードを実行するかもしれません。

したがって、安全と判っていないファイルローカル変数を発見した場合、Emacsはファイルのローカル変数リスト全体を表示して、それらをセットする前に継続するか尋ねます。yまたはSPCをタイプすると、ローカル変数リストは効果をもち、nの場合は無視します。Emacsがバッチモード(Initial Optionsを参照してください)で実行されている場合、Emacsは確認することができないので、nと応えられたとみなします。

Emacsは通常、特定の変数/値ペアーが安全だと認識できます。たとえばcomment-columnfill-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つで、tnil、およびそれ以外です。デフォルトは、tnilではないmaybeで、通常Emacsはeval変数を処理するときに確認を求めます。

例外として、評価する任意のeval形式が、変数safe-local-eval-formsで指定された形式の場合、Emacsは確認を求めません。