bundle.el で Emacs でもぶんどる (Emacs Advent Calendar 31日目)

Emacs Advent Calendar の31日目です。

本来は26日目担当だったんですが、体を壊して最後に回してもらいました。

gitで管理されているelispをinstallするためのutilityとして書いたbundle.elを紹介します。

 

はじめに

bundle.elはvundle.vim, neobundle.vimEmacs版です。

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 機能はまだありません。

 

インストール

  1. Emacsからgitを使いますのでまずgitをインストールしてください。
  2. どこでもいいので 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に進んでください。
  3. cd emacs-bundleとコマンド入力しcloneしたrepository内に移動してください。
  4. git submodule init && git submodule update とコマンド入力し依存elispのdeferred.elのrepositoryのcloneを取得してください。
  5. .emacs で (add-to-list 'load-path "~/projects/emacs-bundle/emacs-deferred/") のようにstep4で取得したdeferred.elのrepositoryにpathを通してください。
  6. .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* を使った改良を行ってくださいました。