Rc-boot.el is a project mainly written in Emacs Lisp, it's free.
.emacs.el のためのフレームワーク
.emacs.el がウンコみたいに長くなってきてメンテナンスしきれへんわー ってときに、ファイルを分割したくなったりしますが、
(load "~/.emacs.d/rc/hoge.el")
(load "~/.emacs.d/rc/fuga.el")
(load "~/.emacs.d/rc/piyo.el")
(load "~/.emacs.d/rc/punyo.el")
(load "~/.emacs.d/rc/moe.el")
(load "~/.emacs.d/rc/gunyu.el")
(load "~/.emacs.d/rc/pooo.el")
(load "~/.emacs.d/rc/peee.el")
.
.
.
みたいになったりしてそれはそれでウザいし、で、どっかでエラーがでたり すると途中で初期化がとまってウザかったりとウキーとなったりするんで そのあたりを解決するものです。
オイラの今のl .emacs.el に自分でかいたものは、
(load "~/.emacs.d/rc/lisp/rc-boot.el")
の一行だけになってます。 他の設定の実体は、
~/.emacs.d/rc//.el
の中に分散している状況です。
rc-boot.el は、各種設定ファイルが
の各種ディレクトリに入っていると考え、ディレクトリがあれば順番に directory-files して、それが読み込むべきファイルだと判断されれば読み込みます。
読みこむべきファイルというのは、
hoge.el
のように、単に .el のサフィクスを持つものか
のように、emacsen の識別パターンをサフィクスに含み、それが用いる emacs に 適合している場合です。
これで、うんこ長いけど、emacsen ごとにおもいっきり変わったりするフォント 設定とかをファイル別にわけることができます。
ああ、このemacsen の識別パターンと言うのは、簡単な正規表現の置き換えで、 . は | に、@ は .*? になります。ですから、先のファイル名の持つパターンは 正規表現だと
`(fsf-unicom-22|fsf-nt-.*?)'
になりますね。で、何とマッチさせるかと言えば、rc-boot.el が rc-emacsen と 言う変数に設定する識別名でして、
(emacs の種類) - (システムタイプ) - (emacs-major-version)
となります。
emacs の種類は、現状、 fsf と meadow の二種類、システムタイプは、
ってなります。ああ、でも Vista 以降の時代に nt ってなんだか ヘンかもしれないですね。いいんです。今でも DOS とかって 識別名があるのが emacs たんなんですから。
要するに、unix 系と windows の fsf 系列しか今のところ対応してません。 xemacs とかよくわからないの。mac は unix系って認識で おk ? (よくわかってない)
rc-emacsen ... 先述の emacsen の識別名が入ってます
rc-emacsen-match .... rc-emacsen が与えられたパターンにマッチすると nil 以外を返します。 (rc-emasen-match "fsf-@-@") とかって使います。 ああ、でも (rc-emacsen-match "fsf-@[email protected]") とか、ドット区切りのパターンには対応してないです。
rc-emacsen-case .... rc-emacs-match を用いたブロックを生成するマクロです
(rc-emasen-case
(fsf-@-@
(foo-fsf)
(bar-fsf)
(meadow-@-@
(foo-meadow)
(bar-meadow))
(t
(foo-default)
(bar-default))))
は、
(cond
((rc-emacsen-match "fsf-@-@")
(foo-fsf)
(bar-fsf)
)
((rc-emacsen-match "meadow-@-@")
(foo-meadow)
(bar-meadow))
(t
(foo-default)
(bar-default)))
に展開されます。