swoop 20160120.915(in MELPA)
Peculiar buffer navigation for Emacs

概要

まだレビューしていない興味深いパッケージがありました!

swoop.elhelm-swoop(大々的レビュー) と同じ作者による同種のパッケージです。
一言で言えばisearchとoccurのいいとこどりで、
文字入力するたびに検索結果表示が変わります。
最近は活発には更新されていませんが、
helmに依存していない分トラブルに強いと思います。

使い方もhelm-swoopとほぼ同じです。
isearchからswoopに移行できるし、
migemoにも対応しているし、
絞り込み検索もできます。

swoopは内部でaync(レビュー) ライブラリが使われており、
新規Emacsプロセスを立ち上げて検索をしています。
疑似マルチスレッドですね。

そしてhelm-swoopにない面白い機能が存在します。
それは、swoop中にswoop対象となるバッファの
フォントサイズを変更できる点にあります。
swoop対象バッファのフォントを小さくすることで、
表示行数を稼ぐことが可能になります。

helm非依存の類似パッケージにswiper(レビュー) がありますが、
あっちは絞り込み検索やmigemoに対応していません。
一見対応しているように思えますが、
実はクエリ中のスペースを「.*」でつなげた
正規表現を作成しているだけなので、
厳密な絞り込み検索ではありません。
migemo非対応は非日本人が開発者なので致し方ありませんが…

僕はhelm-swoopからswoopに乗り換えてみようと思います。

C-u C-sで M-x swoop-migemo が立ち上がるように設定しました。
また、isearchからC-oでもswoopに移行できます。

まだまだ機能は豊富なので、分かり次第レビューします。

20160808074357.png
Fig1: C-u C-s。helm-swoopと同様だが、フォントサイズが小さくなっている点に注目

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてswoopを使う方は
以下のコマンドを実行します。

M-x package-install swoop

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name swoop

設定 160808074006.swoop.el(以下のコードと同一)

;;; C-u C-sでswoop-migemo
(defun isearch-forward-or-swoop-migemo (use-swoop)
  (interactive "P")
  (let (current-prefix-arg)
    (call-interactively (if use-swoop 'swoop-migemo 'isearch-forward))))
(global-set-key (kbd "C-s") 'isearch-forward-or-swoop-migemo)
;;; isearchからC-oでswoopへ移行
(define-key isearch-mode-map (kbd "C-o") 'swoop-from-isearch)
;;; 0.4秒ごとに更新すると重くならない
(setq swoop-minibuffer-input-dilay 0.4)
;;; swoop対象バッファのフォントを小さくする
(setq swoop-font-size: 0.5)

本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。