Simple package manager for Emacs

前回Erlangの開発環境の話を書きましたが、普段はEmacsを使うことがあまりないので、Emacs事情に詳しくありません。そんなに使わないので、elispファイルをダウンロードしてパスを通し、設定を追加するのがちょっと億劫でした。

emacs24からpackage.elというEmacs Lispファイルのパッケージマネージャが導入されたということなので、package.elを使ってelispファイルをインストールしてみたいと思います。また、package.elを調べていたところ、設定を用途毎に分割して管理できるinit-loader.elというものを知ったので、それも導入してみました。

package.elやinit-loader.elについては、以下のページを参考にしました。

今回の内容は上記ページそのままなのですが、package.elを使ってinit-loader.elをインストールするようにしており、手順を忘れそうなので備忘録として残しておきます。

Install emacs24

package.elはemacs24から使用できますが、今使っている環境にはemacs24がインストールされておらず、apt-cache searchでも見つらない状態だったので、まずはそのあたりから。

1$ sudo add-apt-repository ppa:cassou/emacs
2$ sudo apt-get update
3$ sudo apt-get install emacs24 emacs24-el emacs24-common-non-dfsg

package.el

emacs24をインストールした後、.emacs.d/init.elに以下の記述を追加します。

.emacs.d/init.el:

1;; package
2(require 'package)
3(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)
4(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))
5(package-initialize)

Emacsを起動して以下のコマンドを実行すると、パッケージリストが表示されます。

1M-x list-packages

リストが表示されたら、インストールしたいパッケージを選択(i)して、実行(x)します。

 1  gimme              2.1          available  The XMMS2 interface we all love! Check out http://gimmeplayer.org for m$
 2I gist               20130315.... available  Emacs integration for gist.github.com [github]
 3  git                20130915.932 available  An Elisp API for programmatically using Git [github]
 4  git-annex          20130816.... available  Mode for easy editing of git-annex'd files [github]
 5  git-auto-commit... 20130410.157 available  Emacs Minor mode to automatically commit and push [github]
 6  git-blame          20110509.... available  Minor mode for incremental blame for Git [github]
 7  git-commit         0.1          available  Major mode for editing git commit messages
 8  git-commit-mode    20130919.341 available  Major mode for editing git commit messages [github]
 9  git-dwim           20130130.... available  Context-aware git commands such as branch handling [wiki]
10  git-gutter         20130919.... available  Port of Sublime Text plugin GitGutter [github]
11  git-gutter+        20130918.... available  Manage Git hunks straight from the buffer [github]
12  git-gutter-fringe  20130416.... available  Fringe version of git-gutter.el [github]
13  git-gutter-fringe+ 20130902.... available  Fringe version of git-gutter+.el [github]
14  git-messenger      20130718.659 available  Port of gitmessenger.vim [github]
15  git-rebase-mode    20130912.... available  Major mode for editing git rebase files [github]
16-UUU:%*--F1  *Packages*     27% L545   (Package Menu) 9:30午後 ------------------------------------------------------
17Install package `gist'? (yes or no)

Install init-loader.el

init-loader.elはinit.elを用途毎に分割配置する為の仕組みです。普段からEmacsを使っているわけではないので、このような仕組みを入れる必要があるほどinit.elに設定を書けてないのですが、用途毎に分かれている方がスッキリするので入れてみました。init-loader.elのインストールは前記のpackage.elを使っています。 init-loader.elのインストール後、.emacs.d/init.elに以下の設定を追加しています。下記の設定はpackage.elの設定の後に記述する必要があります。

1(require 'init-loader)
2(setq init-loader-show-log-after-init nil)
3(init-loader-load "~/.emacs.d/inits")

Spliting init.el

あとは元々init.elに書いていた内容を分割し、”~/.emacs.d/inits”の下に配置しています。配置のルールについては、冒頭に記載したページを参照してください。今回は以下のように分割しました。そもそもinit.elに大したことを書いてないので、そんなにファイル数はありませんが…。

~/.emacs.d:

 1.
 2└── .emacs.d
 3    ├── init.el
 4    └── inits
 5        ├── 00-keybinds.el
 6        ├── 01-encoding.el
 7        ├── 02-files.el
 8        ├── 10-display.el
 9        ├── 80-erlang.el
10        └── 80-python.el

Conclusion

package.elとinit-loader.elが使えるようになりました。これで少しは楽になるはず…。

今回package.elとinit-loader.elを導入してみて、~/.emacs.dの下は管理しておかないと色々忘れそうなので、githubにdotfilesのリポジトリを作成しました。