免責事項:私はdir-local varsを使用していませんが、ファイルローカルvarsを使用しています。私はdir-localsが同じように動作すると推測しています。
ローカル変数はまたはcustom.el
の最後に救われていない、安全な値です。 Emacsはデフォルトでは信頼できませんが、何らかの述語が一致しない限り、それらは信頼できません。ファイルとディレクトリのローカルなので、ファイルを開くだけでEmacsが任意のコードを実行できるので、これは良い方針です。永久に適用すると、その値が安全であることをEmacsに伝えます。基本的には正確な値に一致する述語を作成し、それをカスタマイズして保存します。
プロンプト(したがって保存)を防止するには、変数を自分の述語で安全とマークする必要があります。
は例えば、私はadaptive-wrap-extra-indent
は限りそれは整数だとOKであることを意味
(put 'adaptive-wrap-extra-indent 'safe-local-variable 'integerp)
を設定します。私はこの変数をadaptive-wrap
パッケージに追加したのでOKです。(安全な地元の人は当時知らなかったが、修正するためにバグを提出しましたが無視されています)明らかに、(lambda (x) t)
を含む任意の述語を使用することができますが、これに対しては推奨します。
私はあなたを混乱させて申し訳ありません。私の質問は、私のdir-local変数を別々のファイルに永久に保存する方法です。ファイルを訪れるたびに、Emacsは私が適用したいかどうかを尋ね、永久に適用します。 !を押して最後のものを選択すると(永久に適用されます)、これらの変数はinitファイルの最後に追加されます。この時点で、私はそれらをinitファイルではなく別の私の特定のファイルに保存したいと思います。そうする方法はありますか? – windrg00
ああ、あなたが今質問していることを理解していると思います。 Emacsは、あなたが特定のローカル変数のように特定の値を* acceptable *として承認したという事実を保存しています。そのデータは設定する値を指定しません。 Emacsは、あなたの許可なく設定するのが安全ではないかもしれないローカル変数を設定するときに、あなたの許可を求める必要があるかどうかを単にそのデータをチェックします。 – phils
Emacsに 'custom-file'以外の場所に自動的にそのデータを保存するように指示することはできませんが、もしあなたが本当に望むなら、手動でデータを別のelispファイルに移動することを止めるものはありません。'(setq 'safe-local-variable-values ...)') - あなたがinitファイルで 'load'した後、' custom-file'からデータを消去するためにcustomizeインタフェースを使います。あなたは、新しい安全な値を追加するたびにそのメンテナンスを繰り返さなければならないでしょう。だから、IMOはこれを行うのがとても迷惑でしょう。 – phils