はじめに
とりあえずEmacsのCaskを晒す でCask
を晒したが、
今回はちゃんとパッケージを解説していこうと思う。
スクリーンショットとか設定例とか載せる余力があれば別記事で作ります。
それでは早速
これは、読み込むパッケージレポジトリを指定しているだけです。
el-get
ライクにGithubから直にインストールする場合は不要です。
(source gnu)
(source melpa)
(source marmalade)
(depends-on "anzu")
anzu
は、検索を拡張したモードです。(参考)
anzu-query-replace
で、置き換え元文字列を入力するとヒットする候補のハイライト、置き換え先文字列を入力するとヒットする候補の横に置き換え先文字列を表示してくれます。
その他、カーソルが乗っているシンボルを置き換え対象としてくれるanzu-query-replace-at-cursor
などがあります。
(depends-on "auto-install")
auto-install
は、URL指定だけでEmacs Lispを予め指定したフォルダにダウンロードするauto-install-from-url
を提供してくれます(参考)。
URL以外に、Gist, EmacsWiki, dired, etc からインストールできます。
auto-install-batch
は、パッケージが登場するまでとてもお世話になっていました。
最近はCask, pacakage, el-getでめっきり使わなくなってしまいました。
(depends-on "expand-region")
expand-region
は、空気を読んで選択範囲を広げてくれるマイナーモードです(参考)。
er/expand-region
を繰り返し実行(筆者はC-,
にバインド)で、emacs-lisp-mode
なら単語→シンボル→S式の内側→S式全体...と選択領域を広げていってくれます。
カーソル移動が格段に減るのでお勧めです。
(depends-on "highlight-symbol")
highlight-symbol
は、カーソルの載っているシンボルや、指定したシンボルをハイライトしてくれます(参考1, 参考2)。
スペルミスを洗い出すのに重宝します。
(depends-on "multiple-cursors")
multiple-cursors
は、複数の選択領域に対して、編集を行う機能です。(参考1, 参考2,参考3)
Sublime Textのデモンストレーションにもありましたね。あんな感じです。
(depends-on "wgrep")
wgrep
は、grep検索でヒットした行を、そのまま編集できるツールです。
実はあんまり使っていないのですが、wdired
のようなものかと思います。
(depends-on "exec-path-from-shell")
exec-path-from-shell
は、環境変数をシェルから引き継いでくれます。(参考)
rbenv
やnvm
などを使うEmacs Lispを用いるときは必要、と思っていたのですが、こういうケースもあるので注意が必要です。
;; Appearance
(depends-on "color-theme-tango")
;; (depends-on "color-theme-solarized")
color-theme-tango
は、Tango 配色のカラーテーマです。
下にコメントアウトしているSolarizedに乗り換えようか迷っています。
(depends-on "rainbow-delimiters")
rainbow-delimiters
は、対応する括弧に色を付けてくれます(参考)。
組み込みのshow-paren-mode
のみよりもリーダビリティが上がります。デフォルトの色設定が地味な気がする。
(depends-on "popwin")
popwin
は、helm
バッファやHelpなど、すぐ閉じるようなバッファ(?)を開くモードです。(参考)
バッファを勝手に作って閉じないマナーの悪い動作を抑えることができます。
(depends-on "yascroll")
yascroll
はOSのスクロールバーの代わりに、スマホライクなスクロールバーを提供します(参考)
;; Coding
(depends-on "yasnippet")
yasnippet
は、コードスニペットを扱います。(参考)
メジャーモードごとにスニペットを設定可能で、
新たなスニペットを作るのもそれほど難しくありません。
筆者の場合は、C/C++のヘッダテンプレートに使って、インクルードガードを任意の文字列にできるようにしたり、
Copyrightを挿入するのに重宝してます。
(depends-on "flycheck")
flycheck
は、各種言語に対して、編集中にlintやコーディングルールチェッカなどを走らせてくれます。(参考)
すでにflycheck
自身がメジャーな言語に対応しています。
;; Git
(depends-on "magit")
magit
は、GitをEmacsから使うインタフェースを提供します(参考)。
インストールしたら、Gitリポジトリのあるディレクトリに移動してM-x magit-status
を打ちましょう(筆者はC-x g m
にバインドしています)。
現在のリポジトリの状態が表示されるので、とりあえず?
を押して説明を出してみましょう。
(depends-on "git-gutter-fringe+")
git-gutter-fringe+
は、ウィンドウの左端に、GitのHEADからの差分がある行を表示してくれます(参考)。
(depends-on "git-modes" :git "https://github.com/magit/git-modes.git")
git-modes
は、Gitの.gitattribute
, .gitignore
, .gitconfig
, コミット、リベースのそれぞれのメジャーモードを提供します([参考](https://github.com/magit/git-modes))。
URLからもわかるとおり、magit
と同じ所が作っていますが、コミット、リベース以外のモードはmagit
に入っていないようなので入れてみました。
;; File
(depends-on "open-junk-file")
open-junk-file
は、書き散らかし用のファイルを作ってくれます。
M-x open-junk-file
で、任意の拡張子で日付付きのファイルを開いてくれます。
(depends-on "recentf-ext")
recentf-ext
は、recentf
に便利な機能(最近開いたファイルを上へ、など)を提供してくれます(参考)。
recentf
自体は、Emacsに「最近開いたファイル」機能を提供します。
;; Key
(depends-on "sequential-command")
sequential-command
は、同じキーを連続して押した時の動作をカスタマイズします(参考)。
組み込みの設定しか使っていませんが、そのなかでC-a
およびC-e
の動作は秀逸です。
C-a
を連続して押すと、行頭→バッファ先頭→元の位置、とカーソルが移動します。C-e
も同じような動きをカーソル後ろ方向に行います。
(depends-on "smartrep")
smartrep
は、プレフィックスキーの入力を省略させてくれます(参考)。
multiple-cursors
との応用例で見つけました。
;; auto-complete.el
(depends-on "auto-complete")
auto-complete
は、編集中に自動補完の候補を上げてくれます(参考)。
コーディングに重宝します。
(depends-on "ac-dabbrev")
ac-dabbrev
は、auto-complete
にdabbrev
の候補を追加します。
バッファ内にあるシンボルを保管するのに便利です。
;; helm
(depends-on "helm")
helm
は、"なんでも絞り込み"インタフェースです(参考)。
最近人気のpercol
がこれに似てますね。
(depends-on "helm-git-grep")
(depends-on "helm-gtags")
(depends-on "helm-ls-git")
(depends-on "helm-themes")
上記は、それぞれgit-grep
の候補を表示、gtags
の候補を表示、Gitリポジトリの全ファイルを表示(超便利!)、カラーテーマ一覧を表示(入れたはいいけどあんまり使ってない)、です。
;; progmodes
(depends-on "coffee-mode")
(depends-on "haskell-mode")
(depends-on "js2-mode")
(depends-on "json-mode")
(depends-on "markdown-mode")
(depends-on "scala-mode")
(depends-on "tuareg")
(depends-on "web-mode")
(depends-on "yaml-mode")
このあたりはあまり説明は必要ないでしょう。
web-mode
だけ説明しておきます。
web-mode
は、CSS, JavaScript, HTML,がごたまぜになる.html
に対するメジャーモードです。
テンプレートエンジンにも対応しているので、Smartyなどのファイルも使えます。
昔はmmm-mode
と他のモードを組み合わせるのが定石でしたが、もうこれで十分ですね。
;;; Ruby
(depends-on "ruby-mode")
(depends-on "ruby-block")
(depends-on "ruby-end")
ruby-block
は、end
キーワードにカーソルを置くと、対応するdef
などをハイライトしてくれます。
ruby-end
は、最近使えなくなってしまったらしいruby-electric
の代替です(参考)。
通常の括弧は、Emacs組み込みのelectricで代用して、do
などに対するend
の挿入だけruby-end
でまかなっています。
終わりに
最後の方は力尽きて手抜きになってしまいました。
あと、るびきちさん、m2ymさん、syohexさんのEmacs Lispの登場率が高すぎ。最高です。