Emacsの初期化をinit-loaderでカイゼン

.emacs.dが空の時に init.el を次のように作成。これはhiroakitさんの「init.elのスリム化を目指す」init-loader.el と package.el を導入して快適 Emacs ライフ」「package.elとinit-loader.elの同時利用での問題にハマった」を参考にさせていただいた。この状態で起動するとDDSKKとinit-loaderが環境によらず自動的にMELPAなどからダウンロード&インストールされるはずである。

[code]
;; init.el.onlyfirstinitialize
(defconst hp-inits-dir (concat user-emacs-directory "inits"))
(defvar hp-melpa-url "http://melpa.milkbox.net/packages/")
(defvar hp-marmalade-url "http://marmalade-repo.org/packages/")
(defvar hp-use-package-list
‘(
;; 以下に使用するパッケージを記述する
ddskk
init-loader
)
)

(require ‘package)
(add-to-list ‘package-archives (cons "melpa" hp-melpa-url))
(add-to-list ‘package-archives (cons "marmalade" hp-marmalade-url))
(package-initialize)

;;; 未インストールのパッケージを探す
(require ‘cl)
(let ((not-installed
(loop for x in hp-use-package-list
when (not (package-installed-p x)) collect x)))
(when not-installed
(package-refresh-contents)
(dolist
(pkg not-installed)
(package-install pkg))))

;;; 各パッケージの設定ファイルはinits以下に置く.init-loaderがそれを読み込む
;;; ファイル命名規則が存在する (例 : 10-hoge.el)
(when (require ‘init-loader nil t)
(setq init-loader-show-log-after-init ‘error-only)
(when (file-directory-p (symbol-value ‘hp-inits-dir))
(init-loader-load hp-inits-dir)))
[/code]

次に、init.elのスリム化を目指す。上記初期化ファイルでは package.el と init-loader.el の設定があり、これをinit以下に分割することになるが、よく考えてみると init-loaderじたいもまたpackage.elに依存してるので、これ以上スリム化する必要はないかもしれない。

[code](defconst hp-inits-dir (concat user-emacs-directory "inits"))

(require ‘package)
(package-initialize)

;; 各パッケージの設定ファイルはinits以下に置く.init-loaderがそれを読み込む
;; ファイル命名規則が存在する (例 : 10-hoge.el)
(when (require ‘init-loader nil t)
(setq init-loader-show-log-after-init ‘error-only)
(when (file-directory-p (symbol-value ‘hp-inits-dir))
(init-loader-load hp-inits-dir)))

[/code]

inits以下にはロード順の順番、またOS別のプレフィックスではじまる初期化ファイルを、これまでのinit.elの資産を分割して作成すればよい。

[code]c:/Users/uep/AppData/Roaming/.emacs.d/inits:
total used in directory 11 available 189569992
drwxrwxrwx 1 uep なし 4096 06-11 14:10 .
drwxrwxrwx 1 uep なし 4096 06-11 14:09 ..
-rw-rw-rw- 1 uep なし 1049 06-11 13:48 20-package.el
-rw-rw-rw- 1 uep なし 44 06-11 13:11 30-ddskk.el
-rw-rw-rw- 1 uep なし 1065 06-11 13:08 windows-initframe.el
[/code]

パッケージを追加したい時は20-package.elで定義すれば自動的にインストールできる。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です