すごい広島#34にエア参加しました。
Emacsのパッケージをgitsubmoduleで管理していたのですが、
あんまりパッケージ管理出来てない事に気づいたので
el-getに移行しました。
やってみたこと
- el-getのインストール
- 野良パッケージをel-getに登録
- パッケージ毎の初期化用elisp作成
- el-get用にgitignore作成
el-getのインストール
el-getのインストールは、公式の方法だと
1 | (add-to-list 'load-path "~/.emacs.d/el-get/el-get") |
というelispをinit.elに書けば良いらしいです。
自分の環境だとうまくいかなかったので、
el-getとhelmだけgitsubmoduleで管理することにしました。
1 | $ cd ~/.emacs.d |
これでひとまずインストールは完了です。
自分の環境だと、el-getの初期化処理は以下の様になりました。
1 | (add-to-list 'load-path "~/.emacs.d/el-get") |
setqしている変数ですが、用途は以下の通りです。
変数名 | 用途 |
---|---|
el-get-dir | el-getでパッケージをインストールする際のインストール先 |
el-get-recipe-path | el-get用のパッケージ定義ファイル置き場 |
el-get-user-package-directory | パッケージがrequireされた時に実行される初期化用elisp置き場 |
あとは、M-x el-get-install
でひたすらパッケージをインストールします。
野良パッケージをel-getに登録
M-x el-get-install
でパッケージをインストールしていくと、
リポジトリに登録されていない野良パッケージの存在に気付かされます。
el-getに野良パッケージを登録するには、el-get-recipe-path
に設定したディレクトリ配下にレシピファイルを作成します。
作成例ですが、yard-mode.el用のレシピファイルと、
1 | (:name yard-mode |
auto-save-buffers用のレシピファイルです。
1 | (:name auto-save-buffers |
:type
で、gitからcloneするか、httpでファイルをそのまま取ってくるかなどの取得方法を指定出来るようです。:url
はリポジトリやファイルのURLを指定します。
上記ファイルを作成すれば、M-x el-get-install
でインストール出来るパッケージの候補として選べるようになります。
パッケージ毎の初期化用elisp作成
これまで私はinit.elにパッケージ毎の初期化処理を書いていたのですが、
el-getでは、el-get-user-package-directory
内にinit-パッケージ名.el
という初期化用elispを用意しておくことで
パッケージがrequireされたタイミングで上記のelispを実行してくれるようです。
最終的に、~/.emacs.dのディレクトリ構成は以下の様になりました。
1 | ~/.emacs.d |
init.elが肥大化していたので、require時に実行したい処理はinit-パッケージ名.el
に書くようにすれば、
だいぶスッキリするのではないかと思ってます。(まだやってない)
el-get用にgitignore作成
el-getを導入後は、elファイルをコンパイルしたelcファイルや、M-x el-get-install
でインストールしたファイルがgit status
実行時にUntracked files:
として表示されるようになりました。
これらを非表示とするため、以下の.gitignoreファイルを作成しました。1
2
3
4*.elc
.loaddefs.el
el-get-packages/
!.status.el
.status.elは、M-x el-get-install
を実行するとel-get-packages/
内に作成されます。
どのパッケージをインストールしたのか、このファイル内に持ってるらしいので
gitで管理する場合は、このファイルもリポジトリに入れた方が良い様です。
まとめ
el-getに移行したことで、Emacs起動時に全てのパッケージが勝手にインストールされるようになりました。
これで、各PC毎にgit submodules update
したりせずに済みます。
野良パッケージもちゃんとレシピファイル準備すれば
el-getの恩恵にあずかることができます。
autoloadとかの仕組みをちゃんと理解出来てないので、init-パッケージ名.el
書きながら慣れていきたいところです。
作成した~/.emacs.d
配下のファイル類はgithubで公開してます。
https://github.com/ogatomo/emacs/tree/el-get