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のリポジトリを作成しました。