Emacsパッケージ特集

バージョン24から入った`package.el`により、プラグインの導入が格段に容易になったEmacs。そこで、ELPA互換のリポジトリの一つである[MELPA](http://melpa.milkbox.net/)のダウンロードTOP50+αのパッケージについてまとめてみた。
（ランキングに関しては2014/3/26時点の情報を使用）

それ単体で便利というよりも、有名なパッケージの依存関係でダウンロードされるライブラリもあるので注意。

ちなみに、個人的なオススメパッケージは、[auto-complete](#2-3)、[helm](#2-7)、[flycheck](#2-10)、[undo-tree](#2-11)、[zenburn-theme](#2-12)、[expand-region](#2-15)、[smartparens](#2-24)、[rainbow-delimiters](#2-28)、[multiple-cursors](#2-29)。
また、TOP50には入っていないが、[anzu](#2-51)、[volatile-highlights](#2-52)、[powerline](#2-53)、[git-gutter-fringe](#2-54)、[hlinum](#2-55)、[smooth-scroll](#2-56)、[yascroll](#2-57)、[undo-hist](#2-58)、[point-undo](#2-59)、[sequential-command](#2-60)もおすすめ。
お好みで[smooth-scroll](#2-56)、[yascroll](#2-57)もどうぞ。

実際に自分が利用している.emacs.dをGithub上で公開してみたので、何かの参考になれば幸い。
https://github.com/hottestseason/dotemacs

`package.el`の利用方法については以下のリンクを参考に。
[package.el - Emacs JP](http://emacs-jp.github.io/packages/package-management/package-el.html)


P.S. たくさんのストックありがとうございます。ストックしてくださっている方や、新しくEmacsのパッケージを探している方のためにも、随時更新していこうと思います。
何か間違いがある場合や他にもオススメパッケージがあれば教えて下さい。

## 1. [magit](https://github.com/magit/magit)

EmacsのためのGitクライアント。
標準のVCと違い、Gitに特化することによって、コンソールからしか出来なかったことがほとんど出来る。

[EmacsのGitクライアント：Magit - Qiita/takc923](http://qiita.com/takc923/items/c7a11ff30caedc4c5ba7)

![magit-status](https://qiita-image-store.s3.amazonaws.com/0/3220/f253fd39-35e2-bf56-18a8-1e940bcb1720.png "magit-status-trimed.png")

## 2. [dash](https://github.com/magnars/dash.el)

elispのリスト操作のためのモダンライブラリ。

[EmacsLispを書くときに便利なライブラリ「dash.el」 - Qiita/mrkuc](http://qiita.com/mrkuc/items/0494d5f415b5681a5849)
[Emacsのモダンなライブラリ4+1選 #dash.el - Qiita/pogin503](http://qiita.com/pogin503/items/01005402dc7cfd375b55#1-2)

## 3. [auto-complete](https://github.com/auto-complete/auto-complete)

言わずと知れた最強の自動補完機能。これのおかげでタイピング力が落ちたという声もちらほら。

[公式サイト](http://cx4a.org/software/auto-complete/index.ja.html)

![auto-complete.png](https://qiita-image-store.s3.amazonaws.com/0/3220/73343996-ba1a-803c-47f7-cf3f9a5e2c77.png "auto-complete")

## 4. [popup](https://github.com/auto-complete/popup-el)

Emacsでポップアップメニューとツールチップを実現するためのライブラリ。auto-completeで使われている。

## 5. [git-commit-mode](https://github.com/magit/git-modes#git-commit-mode)

Gitのコミットメッセージを書くためのメジャーモード。
Gitの`editor`を`emacs`/`emacsclient`にするのをお忘れなく。

![git-commit-mode.png](https://qiita-image-store.s3.amazonaws.com/0/3220/495b2ec8-ecf1-8929-7d50-4d8cea063496.png "git-commit-mode.png")

## 6. [s](https://github.com/magnars/s.el)

elispの文字列操作のためのモダンライブラリ。

[Emacsのモダンなライブラリ4+1選 #s.el - Qiita/pogin503](https://github.com/magnars/s.el)

## 7. [helm](https://github.com/emacs-helm/helm)

`anything`の後継。
補完・リストアップ・絞り込みのためのインターフェース（？）。
使ったことがない人には何のこっちゃわからないかもしれないが、超絶オススメなパッケージの一つ。
日本語のドキュメントが少ないのが玉に瑕。

[もう初心者なんて言わせない、Anything で始まる Emacs 道。 - 日々、とんは語る。](http://d.hatena.ne.jp/tomoya/20090423/1240456834) （注：Anythingの解説）

![helm.gif](https://qiita-image-store.s3.amazonaws.com/0/3220/95a9068b-142a-d00f-98d5-d05edb397422.gif "helm")

## 8. [yasnippet](https://github.com/capitaomorte/yasnippet)

TextMateからインスパイアされたテンプレートフレームワーク。
標準で[いろいろな言語](https://github.com/AndreaCrotti/yasnippet-snippets)に対応しているので、なかなか便利だが、「最近の言語はそもそもテンプレートなんていらないよね」なんて口が裂けても言えない。

[最強テンプレート補完機能: YASnippet - Ochiailab Tips](http://ochiailab.blogspot.jp/2012/12/yasnippet.html)

## 9. [git-rebase-mode](https://github.com/magit/git-modes#git-rebase-mode)

`git rebase -i`で作られる`git-rebase-todo`のためのメジャーモード。`git-commit-mode`と同じく`editor`の設定をお忘れなく。

## 10. [flycheck](https://github.com/flycheck/flycheck)

エラー表示のためのライブラリであるflymakeに、様々な言語のための初期設定や自作のための便利なAPIを追加してくれるパッケージ。
flymakeでゴニョゴニョする前に、こちらを試してみよう。

[公式ユーザマニュアル](http://flycheck.readthedocs.org/en/latest/manual/index.html)
[Flycheckでモダンなシンタックスチェック - Qiita/senda-akiha](http://qiita.com/senda-akiha/items/cddb02cfdbc0c8c7bc2b)
[flymakeの設定する前に flycheckを確認しよう - Life is very short](http://d.hatena.ne.jp/syohex/20130123/1358950322)

![flycheck.png](https://qiita-image-store.s3.amazonaws.com/0/3220/4a2fe227-6c2f-bef7-1cd8-3ab9f84f6b4f.png "flycheck.png")

## 11. [undo-tree](http://www.emacswiki.org/emacs/UndoTree)

undoの履歴をビジュアライズするライブラリ。
ぜひ、すべてのエディタに標準で付いていて欲しい機能。
これと[undohist](https://github.com/m2ym/undohist-el)があればGitなんていらないよね（嘘）。

[Emacs24.3の導入とundo-tree.elの紹介 - Qiita/takc923](http://qiita.com/takc923/items/c3d64b55fc4f3a3b0838)

![undo-tree.png](https://qiita-image-store.s3.amazonaws.com/0/3220/1b2d0bc3-1c4e-4308-43f8-3bbd9fc824b7.png "undo-tree")


## 12. [zenburn-theme](https://github.com/bbatsov/zenburn-emacs)

ローコントラストなテーマである[Zenburn](http://slinky.imukuppi.org/zenburnpage/)のEmacs版。
今までのスクリーンショットでの使用テーマがこれ。

## 13. [pkg-info](https://github.com/lunaryorn/pkg-info.el)

インストールされているパッケージのバージョンを取得するライブラリ。
`cider`や`flycheck`、`projectile`など、有名なパッケージで使用されている。

## 14. [smex](https://github.com/nonsequitur/smex)

`ido`の`M-x`版。`helm`や`anything`は使いたくないけど、あいまい検索で`M-x`を使いたい人向け。
最近使ったコマンドは上位に出てくる。

## 15. [expand-region](https://github.com/magnars/expand-region.el)

Emacsのリージョン（選択範囲）をインタラクティブに広げたり、狭めたりする機能を追加するパッケージ。
様々な言語やコンテキストに対応していて、特にlisp系言語や[multiple-cursors](#2-29)と相性がいい。

[Episode 09: expand-region - Emacs Rocks! （デモ）](http://emacsrocks.com/e09.html)
[expand-region.elの紹介 - Life is very short](http://d.hatena.ne.jp/syohex/20120117/1326814127)

## 16. [markdown-mode](http://jblevins.org/projects/markdown-mode/)

markdownのためのメジャーモード。
コマンド一発でプレビューが開けるらしいが、それなら[kobito](http://kobito.qiita.com/)の方がいいよね（と、ごまをすってみる）。

## 17. [cider](https://github.com/clojure-emacs/cider)

EmacsをClojure開発のためのIDE/REPL化するためのパッケージ。

[Clojure開発環境インストール手順(Emacs) - /home/matstani/weblog](http://matstani.github.io/blog/2013/04/19/clojure-dev-env-emacs/)

## 18. [projectile](https://github.com/bbatsov/projectile)

Emacsでプロジェクト内のファイルを管理するためのパッケージ。
gitやmercurial、bundler、sbtなどを認識して、自動でプロジェクトのルートディレクトリを割り出してくれ、
プロジェクト内のファイルやディレクトリへのアクセスを容易にする。
helmと連携する機能`helm-projectile`もある。

## 19. [epl](https://github.com/cask/epl)

package.elにいくつか便利なAPIを追加している。
`pkg-info`で使用されている。

## 20. [clojure-mode](https://github.com/clojure-emacs/clojure-mode)

Clojureのためのメジャーモード。

## 21. [f](https://github.com/rejeep/f.el)

elispのファイル操作のためのモダンライブラリ。

[Emacsのモダンなライブラリ4+1選 #f.el - Qiita/pogin503](http://qiita.com/pogin503/items/01005402dc7cfd375b55#1-4)

## 22. [ido-ubiquitous](https://github.com/DarwinAwardWinner/ido-ubiquitous)

ファイルやバッファだけではなく、ほとんどあらゆる場面でidoスタイルの補完を使えるようにするライブラリ。
helmで(ry。

## 23. [paredit](http://www.emacswiki.org/emacs/ParEdit)

lispなどで丸括弧のバランスを維持するためのパッケージ。

[ParEdit チュートリアル - Daregada Archives](http://www.daregada.sakuraweb.com/paredit_tutorial_ja.html)

## 24. [smartparens](https://github.com/Fuco1/smartparens)

カッコやクォートなどの対応関係を自動挿入・管理するパッケージ。
同じような機能を持つ、autopair、textmate、wrap-region、electric-pair-mode、pareditなどの機能をすべてまとめて、さらにいくつか新しい機能を加えた（らしい）。
latexやruby、htmlのための拡張機能も付いている。

[smartparens.el での括弧処理 - 理系学生日記](http://d.hatena.ne.jp/kiririmode/20131231/p1)
[デモ動画 - Youtube](http://www.youtube.com/watch?v=ykjRUr7FgoI&list=PLP6Xwp2WTft7rAMgVPOTI2OE_PQlKGPy7&feature=plpp_play_all)

## 25. [haskell-mode](https://github.com/haskell/haskell-mode)

haskellのためのメジャーモード。

## 26. [ace-jump-mode](https://github.com/winterTTr/ace-jump-mode)

移動したい文字にピンポイントで飛ぶためのパッケージ。

[公式デモ](http://dl.dropboxusercontent.com/u/3254819/AceJumpModeDemo/AceJumpDemo.htm)
[ace-jump-modeの紹介 - Life is very short](http://d.hatena.ne.jp/syohex/20120304/1330822993)
[Emacsで1～3ストロークで画面上の任意の場所に移動するための設定 - non-nil](http://d.hatena.ne.jp/rkworks/20120520/1337528737)

## 28. [solarized-theme](https://github.com/bbatsov/solarized-emacs)

[Solarized](http://ethanschoonover.com/solarized)テーマのEmacs版。

## 28. [rainbow-delimiters](https://github.com/jlr/rainbow-delimiters)

lispのように大量の丸括弧が入れ子構造になっている時に、対応する括弧ごとに色を変え、見やすくするパッケージ。

[Emacs LispのRainbow Delimitersで,対応する括弧を虹色で示そう. - Qiita/ncaq](http://qiita.com/ncaq/items/5a1d102723fec11a8bff)

![rainbow-delimiters.png](https://qiita-image-store.s3.amazonaws.com/0/3220/3ef43394-700f-a683-5014-25d39fe3d849.png "rainbow-delimiters")

## 29. [multiple-cursors](https://github.com/magnars/multiple-cursors.el)

複数の場所にある特定の単語の周辺を同時に編集する機能。
`Sublime Text`の`Multiple Selection`由来で、リファクタリングに便利。
[expand-region](#2-15)や[region-bindings-mode](https://github.com/fgallina/region-bindings-mode)と合わせて使うと効果バツグン。

[Episode 13: multiple-cursors - Emacs Rocks!](http://emacsrocks.com/e13.html)
[multiple-cursors.elのキーバインドを少しだけ改善 - tam5917's diary](http://tam5917.hatenablog.com/entry/20121208/1354931551)

## 30. [gitconfig-mode](https://github.com/magit/git-modes#gitconfig-mode)

`.gitconfig`や`.git/config`などのためのメジャーモード。

## 31. [elisp-slime-nav](https://github.com/purcell/elisp-slime-nav)

Common Lisp開発のための拡張であるSLIMEの機能の一つである「シンボルの定義場所への移動」をEmacs Lispでも使えるようにしたパッケージ。

## 32. [js2-mode](https://github.com/mooz/js2-mode)

Google所属のハッカー、Steve Yeggeによって開発されたJavaScriptのためのメジャーモード。
標準のjavascirpt-modeと比べると

* Ecma-262対応
* 正確なシンタックスハイライト
* 動的なエラー表示
* Rhino、SpiderMonkeyのJavaScript拡張へのサポート

が強み（らしい）。

[js2-mode - 紫藤のWiki](https://sites.google.com/site/shidoinfo/Home/programing-lang/%E9%96%A2%E6%95%B0%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E/ecmascript/javascript-kai-fa-huan-jing/emacs-javascript/js2-mode)

## 33. [gitignore-mode](https://github.com/magit/git-modes#gitignore-mode)

`.gitignore`や`.git/info/exclude`などのためのメジャーモード。

## 34. [diminish](https://github.com/emacsmirror/diminish)

パッケージをたくさん入れてると、モードラインにたくさんのマイナーモード名が表示されるようになる。
そんな時、このパッケージを利用すれば、モードラインに表示されるマイナーモード名を消したり、変更することが出来る。

[マイナーモード表示をカスタマイズ - Meadow/Emacs memo](http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=diminish)

## 35. [inf-ruby](https://github.com/nonsequitur/inf-ruby)

EmacsからRubyのREPLが利用できるパッケージ。
`M-x inf-ruby-console-auto`を利用すれば、Rails（＆Pry）を認識してくれる。

[inf-rubyメモ - odz buffer](http://d.hatena.ne.jp/odz/20060619/1150779522)

## 36. [gh](https://github.com/sigma/gh.el)

EmacsのGithubクライアントのライブラリ。

## 37. [web-mode](https://github.com/fxbois/web-mode)

HTMLの中でJavaScriptやCSS、PHP、Rubyなどを書くためのメジャーモード。
埋め込まれたコードは正しく色付けされる。
昔はmmm-modeとか使ってた記憶があるけど、そちらは現在あまりメンテナンスされてない模様。
っていうか、そもそも今はslimとかjadeを使っているので、生のHTMLを書いていない。

## 38. [exec-path-from-shell](https://github.com/purcell/exec-path-from-shell)

MacやLinuxなどUnix系の環境でシェル以外からEmacsを起動すると、PATHの設定が上手く引き継がれない場合がある。そんな時、このライブラリを使えば、

```el
(exec-path-from-shell-initialize)
```

と書くだけで、すべてバッチリ。

[EmacsでPATHの設定が引き継がれない問題をエレガントに解決する](http://qiita.com/catatsuy/items/3dda714f4c60c435bb25)

## 39. [pcache](https://github.com/sigma/pcache)

永続的なデータをハッシュテーブルのようなデータ構造で保存するためのライブラリ。

## 40. [php-mode](https://github.com/ejmr/php-mode)

PHPのためのメジャーモード。

## 41. [coffee-mode](https://github.com/defunkt/coffee-mode)

CoffeeScript（or IcedCoffeeScript）のためのメジャーモード。

## 42. [color-theme](http://www.nongnu.org/color-theme/)

Emacsの色設定をテーマとして纏めておくことができるライブラリ。
標準でたくさんのテーマが同梱されている。
Emacs24からは標準でthemeフレームワークが入っているので、もういらない子。

[color-themeでEmacsの見た目をきれいにする - Qiita/kubosho_](http://qiita.com/kubosho_/items/17464754663936cb7895)

## 43. [gist](https://github.com/defunkt/gist.el)

Emacsからgistの作成・管理を行うためのパッケージ。

## 44. [yaml-mode](https://github.com/yoshiki/yaml-mode)

YAMLのためのメジャーモード。

## 45. [logito](https://github.com/sigma/logito)

tiny logging framework for Emacs.
[gh](#2-36)で利用されている。

## 46. [ack-and-half](https://github.com/jhelwig/ack-and-a-half)

Emacsから[ack](http://beyondgrep.com/)を利用するためのパッケージ。
[ack.el](http://rooijan.za.net/code/emacs-lisp/ack-el)や[full-ack.el](http://nschum.de/src/emacs/full-ack/)を参考にして作られた。

## 47. [dired+](http://www.emacswiki.org/emacs/dired+.el)

Emacs標準の`dired`の強化版。

[Dired Plus - EmacsWiki](http://www.emacswiki.org/emacs/DiredPlus)

## 48. [move-text](http://www.emacswiki.org/emacs/move-text.el)

現在いる行や選択しているリージョンを`M-up`や`M-down`で上下に移動できる。

## 49. [slime](https://github.com/slime/slime)

EmacsをCommon Lisp開発のためのIDE化してくれるライブラリ。

[公式サイト](http://common-lisp.net/project/slime/)

## 50. [ctable](https://github.com/kiwanami/emacs-ctable)

Emacsで表を表示させるためのMVCなフレームワーク。

## 56. [anzu](https://github.com/syohex/emacs-anzu)

[vim-anzu](https://github.com/osyo-manga/vim-anzu)のEmacs版。
検索時にマッチした数と現在の位置を表示してくれる。

[作者による解説ページ - Qiita/syohex](http://qiita.com/syohex/items/56cf3b7f7d9943f7a7ba)

![anzu](https://qiita-image-store.s3.amazonaws.com/0/3220/ba74649b-a225-b569-d50d-679ee2d87b5c.gif "anzu.mov.gif")

## 57. [volatile-highlights](https://github.com/k-talo/volatile-highlights.el)

undoやyankした後にどこが変わったかをハイライトしてくれる。

![volatile-highlights](https://qiita-image-store.s3.amazonaws.com/0/3220/9a8fd48a-cf1a-2878-83af-423da493e818.gif "volatile-highlights.mov.gif")

## 104. [powerline](https://github.com/milkypostman/powerline)

Emacsのモードラインをだいぶシャレオツにしてくれるパッケージ。
Vimの[Powerline](https://powerline.readthedocs.org/en/latest/)のEmacs版。
カスタマイズする場合には`powerline-active1`、`powerline-active2`辺りのfaceをいじると色とかが変えられる。
モードライン全体の構成を変えたい人は、`mode-line-format`を自分好みに設定しよう。
書き方に困ったら[powerline-themes.el](https://github.com/milkypostman/powerline/blob/master/powerline-themes.el)を参考にするといいかも。

[emacsにpowerlineを導入 - $shibayu36->blog;](http://shibayu36.hatenablog.com/entry/2014/02/11/160945)

![powerline](https://qiita-image-store.s3.amazonaws.com/0/3220/0d3b5011-5504-06db-8652-243576f9aa81.png "_Users_summer__emacs_d_init_d_init-face_el.png")

## 124. [git-gutter-fringe](https://github.com/syohex/emacs-git-gutter-fringe)

Sublime Textの[Git Gutter](https://github.com/jisaacks/GitGutter)のEmacs版で、前回からの変更点を視覚的に表示してくれる機能。
[git-gutter](https://github.com/syohex/emacs-git-gutter)と違い、`emacs -nw`のようなtty frameでは動作しないが、
fringe（フレームの左右の余白）部分に表示するため、linum-modeと併用できる。

ちなみに、使ったことはないが、git-gutterから派生したプロジェクトで[git-gutter+](https://github.com/nonsequitur/git-gutter-plus)なるものが存在していて、
git-gutterの作者もオススメしているので、興味がある方は使ってみるといいかも。

[git-gutter.el - Emacs JP](http://emacs-jp.github.io/packages/vcs/git-gutter.html)
[git-gutterと git-gutter+の違い - Life is very short](http://d.hatena.ne.jp/syohex/20131002/1380724469)

## 440. [hlinum](https://code.google.com/p/hlinum-mode/)

行番号を左に出してくれるlinum-modeにプラスして、現在いる行番号を強調表示してくれる。

[作者による紹介ページ - tm_tnの布団の中](http://d.hatena.ne.jp/tm_tn/20110605/1307238416)

## 483. [smooth-scroll](https://github.com/k-talo/smooth-scroll.el)

スクロールを滑らかにしてくれる。

[Emacsのスクロールが滑らかになって気持ちいい！ - Qiita/ShingoFukuyama](http://qiita.com/ShingoFukuyama/items/429199542c38625c5554)

![smooth-scroll](http://cl.ly/image/3G3L2a183812/smooth-scroll.gif)

## 602. [yascroll](https://github.com/m2ym/yascroll-el)

OS標準のスクロールバーなんてダサくて、速攻で消してる人にオススメなパッケージ。
スクロールバーをちょっとかっこよくしてくれる。
詳しくはリンク先か、上の[smooth-scroll](#2-56)のスクリーンショットで確認してみよう。

[作者による解説ページ](http://d.hatena.ne.jp/m2ym/20110401/1301617991)

## 696. [undohist](https://github.com/m2ym/undohist-el)

バッファやEmacsを閉じた後もファイルのundoの履歴を保持してくれる。

## 811. [point-undo](http://www.emacswiki.org/emacs/point-undo.el)

カーソル位置をundo・redoする機能を追加してくれる。

## 974. [sequential-command](#http://www.emacswiki.org/emacs/sequential-command.el)

rubykitch先生が開発した、同じコマンドを連続実行することで挙動を変える機能を追加するパッケージ。
例えば、一緒にインストールされる`sequential-command-config`をrequireすると定義される`seq-home`は次のような挙動を示す。

1. まず行頭に飛ぶ
2. 次にバッファ先頭に飛ぶ
3. 次に元の場所に戻る

バッファ先頭に行く`M-<`とか覚えたくない人には大変便利。
（`seq-home`を`C-a`に割り当てとけば、`C-a`を２回連打すればバッファ先頭に行ける）
同様に`C-e`に対応する`seq-end`や前の単語を次々に加工する`seq-upcase-backward-word`や`seq-downcase-backward-word`などもめっちゃ便利。

[smartrep.el](https://github.com/myuhe/smartrep.el)でも同じことが実現出来ると思うが、そちらは使ったことないので、是非いつか使ってみたい。

[作者による紹介ページ - rubykitch](http://d.hatena.ne.jp/rubikitch/20090219/sequential_command)