Emacs 22 以上であれば通常 ~/.emacs.d 以下に設定ファイルやライブラリ類を集めるのが良いです。
~/.emacs.d を利用すれば .emacs や .emacs.el を作成しなければ ~/.emacs.d/init.el を利用することができます。
ライブラリ類を集めようとすると、ディレクトリを作成することが多いと思いますが、そのままだと load-path が通りません。
例えば .emacs.d/lisp に load-path を通したい場合は以下のようにすると良いでしょう。
(let ((default-directory (expand-file-name "~/.emacs.d/lisp")))
(add-to-list 'load-path default-directory)
(if (fboundp 'normal-top-level-add-subdirs-to-load-path)
(normal-top-level-add-subdirs-to-load-path)))
normal-top-level-add-subdirs-to-load-path はディレクトリ内のサブディレクトリを load-path に追加します。
ディレクトリ内に置いておきたいが、 load-path に追加したくない場合は以下の制限を利用すれば良いでしょう。
- 英数字以外で始まるディレクトリは読み込まない
- RCS や CVS という名前のディレクトリは読み込まない
- .nosearch というファイルを含むディレクトリは読み込まない
例えば、フォルダの名前の先頭に「_(アンダーバー)」や「.(ピリオード)」を付与すれば良いでしょう。
さて、.emacs.d 内のディレクトリ構成をどうするかは悩みの種のようです。あまり共通化されていない様子。
~/
.emacs.d/
init.el
までは定型として、その下にどのようにディレクトリ構成を切るか、ということです。
最低限必要そうなのは以下のディクトリでしょうか。
- init.el を分割した、初期設定ファイル
- 他者配布の Emacs Lisp 類
- 自分作成の Emacs Lisp 類
1 に使えそうな名前は以下な感じでしょうか。
- pref
- prefs
- conf
- site-start.d
- init.d
- rc.d
2、3 に使えそうな名前は以下な感じでしょうか。
- elisp
- lisp
- site-lisp
- vendor
- plugin
- lib
- libs
以下は個人的な選択方法。
init.d だと補完の時に init.el と重なるのであまり便利ではないですね。rc.d も Emacs Lisp を入れるディレクトリ名としては微妙な気がします。
pref や conf は Emacs 関連の文書にほとんど出てこないようです。 pref だと prefix、conf は cond と微妙にぶつかるからかもしれません。
elisp という名前は Elisp というプログラミンング言語が別にあるので避けています。 site-lisp という名前にすると Emacs Lisp を make でインストールする時に prefix 指定するだけでインストールできるので楽だったので、site-lisp が良いかなーと思ったのですけど、 init.el と init.d みたいに site-start.d とぶつかるのですよね。
ということで、今の所以下のような構成にしてみています。.emacs.d だけコピーするとほとんどの環境で同じに動作することを想定しています。
まだ試行錯誤中で整理しおわったら公開しようと思います。
~/
.emacs.d/
init.el
site-start.d
init-*.el
… init.el から読みこむ起動設定ファイル
lisp
… 他者が配布している Emacs Lisp
local-lisp
… 自分で作成した Emacs Lisp やなんらかの理由で公式配布のバージョンから修正してある Emacs Lisp
private
… 公開しないファイル類など
rc.d
… zshrc 等の rc ファイルがはいっていて ln -s している。結局 Emacs との連携を考えるのでまとめた
bin
… Emacs Lisp のみから呼ぶことを想定して作成してあるスクリプト等
share
dtd
rnc
icons
skk
man
info
… Emacs Lisp が利用する固定(基本いじくらない)リソース
etc
snippets
rst
… Emacs Lisp が利用する可変(基本いじる)リソース
var
… キャシュファイルやバックアップファイル用
参考サイト