anything-swoopを使用するための設定

経緯

Emacsでanythingを使用しています(helmをあまり使用したくないため)。

現在、ace-isearch を使用していますが、この設定では6文字以上の検索でhelm-swoopを使用してしまいます。

anything-swoopを公開している方を見つけたので、 ace-isearchからanything-swoopを使用するように設定しました。

手順

cmigemoの設定

;; cmigemo: https://github.com/kron/cmigemo

(require 'migemo)
(setq migemo-command "cmigemo")
(setq migemo-options '("-q" "--emacs"))

;; Set your installed path
(setq migemo-dictionary (expand-file-name "/usr/share/migemo/utf-8/migemo-dict"))
;; 辞書の場所に合わせて適切に変更

(setq migemo-user-dictionary nil)
(setq migemo-regex-dictionary nil)
(setq migemo-coding-system 'utf-8-unix)
;; migemoを起動する
(load-library "migemo")
(migemo-init)

;; キャッシュの設定
(setq migemo-use-pattern-alist t)
(setq migemo-use-frequent-pattern-alist t)
(setq migemo-pattern-alist-length 1024)

anything-swoopのダウンロード

このページ からanything-swoop.elをダウンロードしてパスの通った場所に保存する。

ace-searchからanything-swoopを使用するための設定

(require 'ace-isearch)
(custom-set-variables '(ace-isearch-function-from-isearch 'anything-swoop-from-isearch))
(custom-set-variables '(ace-isearch-fallback-function 'anything-swoop-from-isearch))
(global-ace-isearch-mode 1)

以上の設定でanything-swoopを使用することができます。

anythingで絞り込み選択をする際に全ての候補を選択する方法

最近、helmからanythingに戻せるものは戻しています。

そうした所、 helm(helm-miniなど)で絞り込み選択をする際に M-a で全ての候補を選択することができていましたが、 anythingではできないことに気付きました。

以下、解決法です。

そのため、 helmのソースコードで M-a を使用している箇所を検索したところ helm-mark-all という関数が見つかりました。

anythingでも同じような関数が定義されているかを調べたところ anything-mark-all が見つかりました。

そこで

(define-key anything-map (kbd "M-a") 'anything-mark-all)

としてM-aにanything-mark-allを割り当てたところ、 anythingでも全ての候補を選択できるようになりました。

【追記】

anythingのコードを見ると anything-mark-allがM-aに割り当てられているようです。

ただ、M-aが効いたり効かなかったりするので自分自身では上記の設定をしておきます。

また、 M-m (anything-toggle-all-marks)で全てを選択したり選択を解除することができるので、こちらでもいいかもしれません。