特定のディレクトリ内のすべてのファイルに対して実行するフックを作成する良い方法は何ですか?


7

指定したディレクトリにあるファイルを開いたときに実行する関数を割り当てる良い方法は何ですか?フックと同じですが、メジャーモードではなくファイルの場所に基づいています。

ディレクトリに特別なファイルを置くことでこれを有効にできればいいのですが、中央の構成ファイルにフックを追加するのも良いでしょう。

回答:


7

find-file-hook、およびフック関数で、候補ファイルが指定されたディレクトリにあるかどうかを確認します。


うん、それはうまくいくように見えます。Google経由で特定のフックを見つけることができませんでした。
Tikhon Jelvis

2
GoogleではなくEmacs質問してください。M-x apropos-variable RET file hook
2015年

6

これは、ローカル変数が何のためにあるかのように聞こえます。.dir-locals.el必要な設定でディレクトリにファイルを作成するだけで、すべてのファイルがそれらの設定を継承します。


このオプションには、メイン構成ファイルの設定と関連ディレクトリをハードコーディングしないという利点があります。
T. Verron、2015年

1
;;; .dir-locals.el

((nil
  (eval add-hook 'find-file-hook (lambda ()
                                   (message "my find-file hook called...")) nil t)))

nilこれは怒鳴るディレクトリ内のすべてのファイルに適用されることを意味し.dir-locals.el

t渡されるとadd-hookfind-file-hookバッファがローカルになります。したがって、フックはこのファイルに対してのみ実行されます。

dir-localsfind-file-hookに実行されるので、すべてが機能します。


2
mx.sxへようこそ!アイデアは良いです、そして私は@erikstokesの答えが例から利益を得ると思います、しかしあなたの例は間違っているようです:ファイルがディレクトリで開かれた後、関数はに追加されfind-file-hook、そしてすべてのファイルに対して実行されますあとで開けますね
T. Verron、2015年

なぜコードを直接実行しないのですか?
politza
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.