6

これが可能かどうかはわかりませんが、次を使用してプロジェクト固有のキーバインディングをセットアップしたいと思います.dir-locals.el

もちろん.dir-locals.el、特別な設定リストを含める必要があるため、次のことはできません。

(global-set-key [24 down] 'move-text-down)

ラムダを挿入して任意のコードを実行する方法や、キーバインディングを設定する他の方法はあり.dir-locals.elますか?

4

1 に答える 1

11

eval疑似変数を使用すると、ローカル変数で評価する任意の elisp を指定できます。

https://stackoverflow.com/a/7340962/324105

詳細については、 EmacsWikiを参照してください。

問題のキーマップを使用するすべてのバッファが影響を受けるため、これはキーバインディングを設定するための特に有用なメカニズムではないことに注意してください。おそらく、dir-local 設定を使用して、そのプロジェクトの特定のキーマップでマイナー モードを有効にする方がよいでしょう。別の方法として、このアプローチをファイル ローカル バインディングに適用することもできます(ただし、マイナー モードの方が適切です)。

そうは言っても…

かなり最小限の形式は((nil . ((eval . (progn BODY)))))BODY評価される式です。もちろん、BODYが 1 つの式だけの場合は、 は必要ありませんprogn

したがって、次の例では、(問題のディレクトリの下にある) ファイルにアクセスするとメッセージが表示されます。

((nil . ((eval . (message "hello")))))

dir-locals 形式の各リストの car は、通常、メジャー モード シンボルです。またはnil(上記の例のように) この場合、設定は任意のメジャー モードに適用されます。

car はサブディレクトリ文字列を指定することもできます。その場合、cdr はそのサブディレクトリに適用可能な設定を持つ別の dir-locals 形式です。

于 2013-11-02T09:14:36.650 に答える