block_given?

ジャングル ブロック ナイ アルノハ jump ダケ。CC-BY-SA 3.0

モダンなEmacsを求めて (3) init-loaderで設定ファイルを分割する

今回のモダンなEmacsを求めては設定ファイルの分割管理について。

init-loader.elを使うと、~/.emacs.d/inits以下で分割した設定ファイルを管理できる。 ファイル名ベースで読み込む順番や、環境依存の設定ができるので、モダンなEmacsにはかかせないパッケージです。

前回の設定に追記します。 package.elの初期化が終わった後、package.elの機能を使いinit-loaderをインストールします。

(when (>= emacs-major-version 24)
  (require 'package)
  (add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t)
  (package-initialize)
  (unless (package-installed-p 'init-loader)
    (package-refresh-contents)
    (package-install 'init-loader))
  (require 'init-loader)
  (init-loader-load)
  )

init-loaderで読み込む順番

init-loaderでは、先頭2桁の文字の順に読み込まれる。

なので、効率よく管理するためには、先頭二桁をどのような役割に振るかが重要。 とりあえずこのような感じで設定しようと思う。

番号 説明
00 package.el等によるパッケージの導入を書く。パッケージを導入するために使う、requireしたり設定するのは別ファイルに書く。
01〜19 Emacs本体に元から備わっている機能に対する設定。
20〜98 Emacs拡張機能に対する設定。このなかでどう割り当てるかは別途考える。
99 キーバインドの設定。パッケージで導入した拡張機能に対してキーを割り当てることもあるので、すべてのEmacs拡張機能が読み込まれた後に実行する。

また、init-loaderによる管理を徹底するため、~/.emacs.d/init.elにはinit-loaderを読み込むための最低限の設定以外、書かない方針でいこうと思います。

くふう: インストールされていない場合のみ、パッケージのリストを更新する

package-refresh-contentsはパッケージのリストをウェブから取得する。

Download the ELPA archive description if needed.
This informs Emacs about the latest versions of all packages, and
makes them available for download.

package-refresh-contentsを毎回呼ぶと起動に時間がかかるので、 package-installed-pinit-loaderがインストールされているか調べ、 インストールされていない場合のみpackage-refresh-contentsを呼び、init-loaderを呼ぶようにした。