emacsの環境をgithub等で管理している場合、新規に環境構築しようとした時パッケージのダウンロードが問題となる。
理想としては
- パッケージのリストを列挙しておくと
- パッケージが無い場合は自動的にダウンロードしてインストールしてくれる
- すでにインストールしてある場合は何もしない
のように動いて欲しい。いろいろ方法はあるようだが、自分の環境では今までどれもうまく動いてくれなかった。
今回el-getを使うことで上記理想の動作ができるようになった。
参考: http://tarao.hatenablog.com/entry/20150221/1424518030
package.elについて
el-getはpackage.elやMELPAを自動的に参照してくれるため、init.elでそれらの設定をしている場合は消去してしまってかまわない。
el-getの設定
init.elの冒頭に以下の記述を行う。
~/.emacs.d/init.el
(when load-file-name
(setq user-emacs-directory (file-name-directory load-file-name)))
(load (concat user-emacs-directory "init-el-get.el"))
init-el-get.elを作成しel-getのための設定と必要なパッケージをel-get-bundle
で列挙していく
~/.emacs.d/init-el-get.el
(add-to-list 'load-path (locate-user-emacs-file "el-get/el-get"))
(unless (require 'el-get nil 'noerror)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/dimitri/el-get/master/el-get-install.el")
(goto-char (point-max))
(eval-print-last-sexp)))
(el-get-bundle helm)
(el-get-bundle helm-ls-git)
; 以下略
基本的にはこれだけ。パッケージ名はMELPAとほぼ同じなので迷うことはないだろうがM-x el-get-list-packages
で確認することもできる。
el-get-bundle
に対してはオプションでインストール元がいろいろ指定できる(参考)