bundle.el で Emacs でもぶんどる (Emacs Advent Calendar 31日目)
Emacs Advent Calendar の31日目です。
本来は26日目担当だったんですが、体を壊して最後に回してもらいました。
gitで管理されているelispをinstallするためのutilityとして書いたbundle.elを紹介します。
はじめに
bundle.elはvundle.vim, neobundle.vimのEmacs版です。
Emacsにはauto-install.elやpackage.elといったelisp managerがあるのですが、githubなどにあるelispをvundleやneobundleのように扱いたかったので書きました。
機能
bundle.elはgithubやrepo.or.czなどのgit repositoryにあるelispを取得し、取得したelispへのload-pathを通します。
svn, hg, bzr repositoryはまだsupportしていません。
uninstall, update 機能はまだありません。
インストール
- Emacsからgitを使いますのでまずgitをインストールしてください。
- どこでもいいので git clone git://github.com/kozo2/emacs-bundle.git とコマンド入力しbundle.elがあるrepositoryをcloneしてください。bundle.elはid:kiwanamiさん作のdeferred.elに依存しています。すでにdeferred.elをEmacsで使えるように設定されている場合はstep3,4,5を飛ばしてstep6に進んでください。そうでなければstep3に進んでください。
- cd emacs-bundleとコマンド入力しcloneしたrepository内に移動してください。
- git submodule init && git submodule update とコマンド入力し依存elispのdeferred.elのrepositoryのcloneを取得してください。
- .emacs で (add-to-list 'load-path "~/projects/emacs-bundle/emacs-deferred/") のようにstep4で取得したdeferred.elのrepositoryにpathを通してください。
- .emacs で (load "~/projects/emacs-bundle/bundle.el") のように2でcloneしたrepository中のbundle.elをloadする設定を書いてください。
使い方
M-x bundle-install-git とコマンド入力した後、installするelispのgit repositoryのurlを聞かれますので git://github.com/m2ym/auto-complete のように入力してください。
deferred.elを用いて非同期でgit cloneを行い、cloneしたrepositoryをload-pathに追加します。
load-pathの追加が終わると finished install from ... のようにコマンドラインにmessageが表示されます。
後は、Emacsをrestartせずに使いたければ、M-x load-library としてinstallしたelisp名を入力するなり、Emacsをrestart後も使いたければ、.emacsに(require 'installしたelisp名) とするなりしてください。
git で clone する url の例
- git://repo.or.cz/anything-config
- git://github.com/kiwanami/emacs-window-layout
- git://github.com/kiwanami/emacs-window-manager
- git://github.com/capitaomorte/yasnippet
- git://github.com/hayamiz/twittering-mode
- git://github.com/magit/magit
謝辞
id:kiwanami さん deferred.el の使い方などについて教えていただきました。
id:syohex さん lexical-let* を使った改良を行ってくださいました。