最初の動機は、るびきち氏のメルマガから。
init-loader
init-loader.el と package.el を導入して快適 Emacs ライフ - Qiita
インストールはかんたん。
M-x auto-install init-loader
init-loader前
で、800行近くあったinit.elは最終的に2行になりました。
$ cloc init.el 1 text file. 1 unique file. 0 files ignored. http://cloc.sourceforge.net v 1.60 T=0.05 s (19.2 files/s, 24972.6 lines/s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Lisp 1 170 300 828 -------------------------------------------------------------------------------
init-loader後
$ cloc init.el 1 text file. 1 unique file. 0 files ignored. http://cloc.sourceforge.net v 1.60 T=0.01 s (112.9 files/s, 225.9 lines/s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Lisp 1 0 0 2 -------------------------------------------------------------------------------
$ pwd /Users/shige/.emacs.d $ tree inits inits ├── 000load-path.el ├── 01encode.el ├── 01font.el ├── 02server.el ├── 03el-get.el ├── 03melpa.el ├── 49yasnippet.el ├── 50auto-complete.el ├── 50auto-install.el ├── 50autocomplete-java-mode.el ├── 50backupfile.el ├── 50c-mode.el ├── 50cake.el ├── 50css.el ├── 50cua-mode.el ├── 50cucumber.el ├── 50defaultdirectory.el ├── 50delete-white-space.el ├── 50dired-listing-switches.el ├── 50drill-instructor.el ├── 50dropbox.el ├── 50eclipse.el ├── 50eev.el ├── 50elscreen.el ├── 50emacs-init-check.el ├── 50ensime.el ├── 50eshell.el ├── 50exit.el ├── 50find-function.el ├── 50find-grep.el ├── 50flymake.el ├── 50flyspell.el ├── 50fsharp-mode.el ├── 50gist.el ├── 50git-commit.el ├── 50grep-find.el ├── 50growlnotify.el ├── 50hatena-diary.el ├── 50hexrgb.el ├── 50highlight.el ├── 50hiline.el ├── 50historyf.el ├── 50html.el ├── 50iimage-mode.el ├── 50indent-tabs-mode.el ├── 50inertial-scroll.el ├── 50init.el ├── 50iterm.el ├── 50jedi.el ├── 50js-mode.el ├── 50json-mode.el ├── 50juante.el ├── 50less-mode.el ├── 50linum-mode.el ├── 50lispxmp.el ├── 50list-hexadecimal-colors-display.el ├── 50mac-finder.el ├── 50mac.el ├── 50magit.el ├── 50markdown-mode.el ├── 50menubar.el ├── 50moccur.el ├── 50mode-info.el ├── 50motion-mode.el ├── 50newline-and-indent.el ├── 50ns-pop-up-frames.el ├── 50open-junk.el ├── 50open.el ├── 50org-mode.el ├── 50php-mode.el ├── 50quickrun.el ├── 50rakefile.el ├── 50require-final-newline.el ├── 50rspec-mode.el ├── 50ruby-end.el ├── 50ruby-mode.el ├── 50scala-mode2.el ├── 50scratch-data.el ├── 50scratch-log.el ├── 50scroll-bar-mode.el ├── 50scroll.el ├── 50scss-mode.el ├── 50search-web.el ├── 50show-paren.el ├── 50simplenote.el ├── 50slime.el ├── 50sql-mode.el ├── 50submodule.el ├── 50tempbuf.el ├── 50text-mode.el ├── 50text-scale-adjust.el ├── 50toolbar.el ├── 50turn-off-auto-fill.el ├── 50twittering-mode.el ├── 50uniquify.el ├── 50view-minor-mode.el ├── 50wc-mode.el ├── 50wdired.el ├── 50yen-mark.el ├── 50zenkaku.el ├── 51flymake.el ├── 90anything-helm.el ├── 91my-hatena.el ├── 92-my-alpha.el └── 999cedet.el
init-loaderを使うことにより、
- エラーが起きたときにどこがダメだったかわかりやすくなる
- 設定の追加も細かくファイルを追加すればいい
- 有効や無効の切り替えも楽
といった利点があるね。
el-getとpackage.el
elispをpackageとel-get両方で管理する - $shibayu36->blog;
えっと、今までgit submoduleでパッケージを管理していたんだけど、
このgit submoduleが微妙に曲者で、addするのはいいんだけど削除するのが
微妙に手間……
試しに追加してみたけどやっぱりいらないってなったときが本当に面倒だったりする。
なので、submoduleで管理していたパッケージをpackage.elとel-getでどうにかすることにしました。
package.elについてはそんなに説明不要ですが、
el-getについては、ちょっと説明を。
レシピふぁいるを書いてアレするだけです。
$ tree recipes recipes ├── auto-java-complete.rcp ├── cucumber.rcp ├── emacs-cake.rcp ├── emacs-cake2.rcp ├── emacs-eclipse.rcp └── helm.rcp
helm.rcp
(:name helm :type git :url "https://github.com/emacs-helm/helm.git")
まあこんな感じで。かなり眠いです。