タグ付けされた質問 「directory-local-variables」


2
.dir-locals.elファイルの場所を基準にしてディレクトリローカル変数を設定するにはどうすればよいですか?
相対パスをディレクトリローカル変数として指定するように言われている状況に私はしばしば気づきます。例えばcmakeの-IDEさんcmake-ide-project-dirとcmake-ide-build-dir。もちろん、これはあまり移植性がありません。 の代わりに .dir-locals.el: ((nil . ((cmake-ide-project-dir . "/home/user/code/project")))) みたいなものが欲しい ((nil . ((cmake-ide-project-dir . directory-of-current-dir-locals-file)))) そのような変数をどのように定義できますdirectory-of-current-dir-locals-fileか?そして、たとえばcmake-ide-build-dir、通常はどのように設定し(concat directory-of-current-dir-locals-file "build")ますか?

2
「危険な」ローカル変数を実行する権限を覚えておいてください
私のプロジェクトの多くでは、.dir-locals.elファイルを使用して、コンパイルコマンドなどのプロジェクト固有の変数を設定しています。そのようなファイルを含むディレクトリ内のファイルを開くと、特に「危険なローカル変数」emacsについて不平を言います。 The local variables list in $DIR$/ contains variables that are risky (**) Do you want to apply it? You can type y -- to apply the local variables list. n -- to ignore the local variables list. ** LaTeX-command : "lualatex -shell-escape" この機能をオフにしたくはありませんが、特定の.dir-locals.elファイルについて(emacsセッション中に)1回だけ尋ねられたいと思います。 ソースツリー全体を解析したいプラグインを使用していますが、yすべてを解析するためだけに何百回もヒットするのは非常に面倒です。 したがって、実際の質問: することができますemacs"ローカル変数のローディング機構は、configure /それは/許可の全体のために特定のローカル変数リストの読み込みを拒否することを可能にするように修正されemacsたセッション?

1
任意の値に対して安全なローカル変数をマークする
変数にsafe-local-variable-valuesは、ファイルローカルまたはディレクトリローカルとして安全な名前/値のペアを格納できます。しかし、時々私が言いたいの任意の値が与えられた変数に対して有効です。私がリンクしたマニュアルページには、整数値はすべて安全であると考えられていますfill-column。私自身の変数に対してこれを行う方法はありますか?

1
.dir-locals.elを信頼する
私は私のinit.elファイルの外にいくつかの設定を入れたい.dir-locals.el、すなわち次のようにします: ((nil (let ((dirs '(".cask" "core" "packages" "modules" "snippets" "themes"))) (mapc #'(lambda (path) (add-to-list 'projectile-globally-ignored-directories path)) dirs)))) しかし、.emacs.dフォルダ内のファイルを開こうとするたびに、このコードを適用するために保存するかどうかをemacsから尋ねられます。私はファイルのローカル変数を設定することでそれを沈黙させようとしました: ;; -*- enable-local-variables: t; enable-local-eval: t -*- そしてそれは全く役に立たなかった、逆にこれらのローカル設定を信頼するために別のメッセージを追加します。.dir-locals.elコードを信頼させるにはどうすればよいですか?

1
ファイルパスはどのように.dir-locals.elのサブディレクトリにマッピングされますか?
のアイデアが好きです.dir-locals.el。.dir-locals.el自分のホームディレクトリに自分のファイルがあり、ファイルを開い.dir-locals.elたディレクトリに近い場合を除いて、開いたディレクトリ/ファイルのすべての変数を設定する必要があります。ただし、ファイルが認識されても、サブディレクトリのディレクトリ変数は開いているファイルに適用されます。 これは私の~/.dir-locals.elです: (("dev/school" . ((indent-tabs-mode . nil) (c-basic-offset . 4))) ("dev/test" . ((indent-tabs-mode . nil) (c-basic-offset . 4))) (c-mode . ((c-file-style . "linux") (c-basic-offset . 8)))) ファイルを開くと~/dev/test/test.c、変数indent-tabs-modeはに設定されtてc-basic-offsetい8ます。 (describe-variable 'c-basic-offset)そのファイルでは、8fromに設定されていることがわかります~/.dir-locals.el。 (describe-variable 'indent-tabs-mode)そのファイルではt、その値()はデフォルトの状態にあると述べています。 どういうわけか望ましい動作を達成できますか?何が悪いのですか?ファイルパスはどのようにしてサブディレクトリにマッピングされ~/.dir-locals.elますか? 編集: ジョナサンが示唆され、私も試してみました: (;; dev/school subdir ("dev/school" . ;; dev/school specification for all modes (nil . ((indent-tabs-mode . nil) …

1
.dir-locals.el内の可変プロジェクトルートフォルダー
C ++コードでの補完に会社モードを使用しています。現在のプロジェクトのインクルードファイルの場所を会社のclangバックエンドに伝えるには、次の.dir-locals.elファイルを使用する必要があります ((c++-mode (eval setq company-clang-arguments (append company-clang-arguments '("-I/full/path/to/project/root/include")))) 常にフルパスを指定する必要があります。ファイルのfull/path/to/project/rootパスを格納する変数に置き換える方法はあり.dir-locals.elますか? 私は試した (c++-mode (eval setq company-clang-arguments (append company-clang-arguments (list concat "-I" default-directory "src"))))) しかし、default-directory私が開いているファイルで評価されているので、プロジェクトルートのパスに戻るのではなく、プロジェクト内の他のパスに戻ります。


3
.dir-locals.elのホワイトリスト
それはロードすることが可能である.dir-locals.el私に、私は、そのファイルに設定していた値を追加することなく、また私にメッセージを表示せずにファイルを、しかし、init.elでcustom-set-variables?私が欲しいのは、そのファイルには機密データが含まれており、自分のを共有する癖があるinit.elため、ロードするだけだからです。一般的に、.dir-locals.el評価すべきではない不適切なコードが含まれている可能性があることを理解しています。なので、たぶんのホワイトリストみたいなものがあるのではないかと思っていました.dir-locals.el。 更新 一般的に私が達成したいのは、追加の手間をかけずにロードされる「プロジェクト」全体のemacs構成ファイルを用意することです。だからそれが不可能な場合.dir-locals.el-私は他の解決策を受け入れる:D
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.