Anything の設定ことはじめ。
鉄は熱いうちに打て、ということで、続けて Anything について書きます。
前の記事で anything-sources にソースを入れると anything がより便利になると書きました。で、ソースについての紹介リンクを並べましたが、結局のところ、自分で使ってみないとそのソースが自分にとって必要なのかどうか判断出来ません。
ぶっちゃけ、一度は全てのソースを試してみておきたいところですが、その度に anything-sources を書き換えるのは面倒です。
そこで、anything-config に用意されている Preconfigured Anything、設定済みの Anything を使ってみましょう。
標準ソース以外の Anything コマンド。
(require 'anything) (require 'anything-config)
上記の設定は済ませていると思いますが、この状態で既に使えるコマンドがいっぱいあります。
例えば、
- anything-for-files
- ファイル表示のに特化した Anything。ffap*1 -> recentf -> buffer -> bookmark -> file-cache -> files-in-current-dir -> locate の順番に候補を表示する。
- anything-info-at-point
- カーソル位置にあるワードを絞り込んだ上で、Elips, Common Lisp, その他 Emacs の Info ドキュメントの候補を表示する。
- anything-show-kill-ring
- 今までに kill した文字の履歴を表示。リターンで挿入。
- anything-minibuffer-history
- ミニバッファに入力した履歴を表示。リターンで挿入。
- anything-kill-buffers
- Emacs 上で開いているバッファのリストを表示。リターンでバッファを閉じる。
- anything-apropos
- apropos という Emacs のドキュメント検索を Anything で行なう。
などがあります。
これらの関数がどのように定義されているのかというと、
(defun anything-for-files () "Preconfigured `anything' for opening files. ffap -> recentf -> buffer -> bookmark -> file-cache -> files-in-current-dir -> locate" (interactive) (anything '(anything-c-source-ffap-line anything-c-source-ffap-guesser anything-c-source-recentf anything-c-source-buffers+ anything-c-source-bookmarks anything-c-source-file-cache anything-c-source-files-in-current-dir+ anything-c-source-locate))) (defun anything-info-at-point () "Preconfigured `anything' for searching info at point." (interactive) (anything '(anything-c-source-info-elisp anything-c-source-info-cl anything-c-source-info-pages) (thing-at-point 'symbol)))
こんな感じです。
つまり、anything という標準のコマンドの関数は、デフォルト、もしくは自分で設定したソースを使うのですが、第一引数にソースのリストを与えてあげると、標準とは違うソースの Anything コマンドを作る事ができるというわけです。
なので、ファイル検索に特化した Anything、タグ検索に特化した Anything、ドキュメント検索に特化した Anything などを用意する事で、より柔軟な Anything を楽しめます。ってか、Anything って凄いですね。
自分の Anything コマンドを作って便利だったら、
(define-key global-map (kbd "C-x a f") 'anything-for-files)
みたいな感じで、キーバイドを登録しておきましょう。
ちょっとした設定
(setq anything-idle-delay 0.3) ; 候補を作って描写するまでのタイムラグ。デフォルトで 0.3 (setq anything-input-idle-delay 0.2) ; 文字列を入力してから検索するまでのタイムラグ。デフォルトで 0 (setq anything-candidate-number-limit 100) ; 表示する最大候補数。デフォルトで 50
候補やソースが多くて、Anything の動作が重いときは、anything-idle-delay と anything-input-idle-delay の値を増やすとサクサクになります。
C-x C-e で評価して、設定を反映させてから Anything を起動して自分の満足する設定にしましょう
RubikitchAnythingConfiguration の様に、
(setq anything-idle-delay 0.3) (setq anything-input-idle-delay 0) (setq anything-candidate-number-limit 100) (defun anything-default () (interactive) (let ((anything-input-idle-delay 0.2) (anything-idle-delay 0.7) (anything-quick-update t) (anything-sources (append '( ;;prior anything-c-source-mew-auto-refile-summary anything-c-source-rdefs-from-rdefs-buffer anything-c-source-emacs-variable-at-point anything-c-source-emacs-function-at-point ;;中略 anything-c-source-file-name-history anything-c-source-anything-grep-fallback anything-c-source-anything-google-fallback )))) (call-interactively anything-function)))
特定の Anything コマンドだけ設定する方法もある。
*1:file find at point: カーソル位置のワードからファイル検索