.emacs には書くほどではないけれども、あるファイルを開いた時にだけ読み込んで欲しい elisp がある場合の対処法。
Emacs の Local Variables 形式を使う。
詳しくは Emacs の info で Local Variables を読んでもらうとして、簡単にやり方を書いておく。
Local Variables and eval
Local Variables にはファイルの先頭に置く方法と末尾に置く方法の二種がある。ここでは後者を使う。
ファイルの末尾に行き、そのファイルのコメントを使いながら次のコードを書く。
Local Variables:
eval: (load "/path/to/foo.el")
End:
例えば Emacs-Lisp のコードなら、こう書く。
;; Local Variables:
;; eval: (load "/path/to/foo.el")
;; End:
C++ なら、こう:
// Local Variables:
// eval: (load "/path/to/foo.el")
// End:
HTML なら、こう:
<!-- Local Variables: -->
<!-- eval: (load "/path/to/foo.el") -->
<!-- End: -->
少し工夫して
ぼくはブログの原稿を blog.xml というファイルに書いて、それを Blogger の投稿エディターにコピペしている。理由は、使い慣れたエディターで文章を書くのが一番楽だから。メジャー・モードには nxml-mode を使っているけれども、Blog 専用の関数をいくつか blog.el というファイルに入れている。
blog.xml を開いた時に、自動的に blog.el (同じディレクトリーにある) をロードするようにしたい。
ぼくは以下のコードを blog.xml の末尾に置いている。
<!-- Local Variables: -->
<!-- eval: (load (expand-file-name "blog.el" ".")) -->
<!-- End: -->
あとがき
このやり方だと、ファイルとそのファイル専用の elisp ファイルをセットで配布できるメリットがある。git でファイルを管理する場合も、ファイルと elisp が別々に別れないので便利。また、ファイルを開くたびにロードする手間を省けるので効率も上がる。
No comments:
Post a Comment