RubyのrbenvやPHPのphpenvと同じように、Emacsにもバージョンマネージャがあります。
まあ、だいたいの人は最新のEmacsをエディタとして、もしくは環境として利用していると思いますので、普通のEmacsユーザにはあまり必要ないかもしれません。
ただ、Emacs LispをCIにかけるときに真価を発揮します。そうです、EmacsはEmacs Lispの実行環境でしたね。
なのでEmacsにもバージョンマネージャが必要になります。そうです。必要です。
evm
evmはf.elでも有名なrejeepさんがメンテナンスをしています。
使い方は、
evm install [version]
でバージョンを指定してインストールするevm use [version]
で指定のバージョンのEmacsを使う
と、RVMに似ています。
例えば、自分がつくったhistoryf.elというライブラリの.travis.yml
は以下のような感じです。
language: emacs-lisp env: - ENV_EMACS=emacs-23.4-bin - ENV_EMACS=emacs-24.1-bin - ENV_EMACS=emacs-24.2-bin - ENV_EMACS=emacs-24.3-bin before_install: # Emacs - sudo mkdir /usr/local/evm - sudo chown travis:travis /usr/local/evm - curl -fsSkL --max-time 10 --retry 10 --retry-delay 10 https://raw.github.com/rejeep/evm/master/go | bash - export PATH="$HOME/.evm/bin:$PATH" # Cask - curl -fsSkL --max-time 10 --retry 10 --retry-delay 10 https://raw.github.com/cask/cask/master/go | python - export PATH="$HOME/.cask/bin:$PATH" - evm install $ENV_EMACS --use - cask script: - emacs --version - make
これで複数バージョンのEmacsでのテストもばっちりですね!!
裏話:なぜevmを見つけたか
実はたまたまです。
ある自分の業務効率に直結するEmacs Lispの大規模改修をすすめるにあたって、どうしても、もともと書いていたテストをCIに乗せたかったのです。
最初は、ppa:cassou/emacs
のリポジトリを利用させてもらっていたのですが、どうしてもemacs-snapshot
が.cask
以下のライブラリを読んでくれない状況になっていました。
いっとき放っておいたのですが、ふと「どうしてだろう」と調べていたときに、このコメントを見つけて、「えーじゃあ他のEmacs LispのCIはどうしているんだろう?」と調べた結果evmをみつけたわけです。
というわけで、皆さんもevmでCIを回して良いEmacsライフを!!