文脈に応じたコマンドを提示する anything-kyr.el をリリース

Emacs 内において空気を読んでコマンドを提示する anything-kyr.el をリリースした。空気とは文脈(カーソル位置、メジャーモード、特定のファイルなど)のことである。たとえば、 transient-mark-mode のときに、「ここの部分をハイライトしたいな〜」なんて感じ。ハイライトした状態にある場合、「ハイライトを消すコマンド」を提示したりもできる。コマンドをすぐに思い出せない人はぜひともインストールしよう。

文脈に応じて最適なコマンドを提示するanything.elのソース - http://rubikitch.com/に移転しました の焼き直して設定しやすいように作り替えたものだ。

本体 anything-kyr.el はあくまでフレームワークのみを提供しているので、実際に使うには anything-kyr-config.el も必要になってくる。とはいえ、 anything-kyr-config.el はできたてほやほやなのでそんなに多くの設定は書いていないのだが…「これを入れてほしい」という案があったら遠慮なくどんどんコメントしてほしい。

設定

(require 'anything-kyr-config)
;; anything-complete.el があれば読み込む
(when (require 'anything-complete nil t)
  ;; 補完を anything でやりたいならば
  (anything-read-string-mode 1))

特に anything.el の設定は必要ない。
anything-complete.el については anything.elとプラグイン等をリリース - http://rubikitch.com/に移転しました をどうぞ。

使い方

M-x anything-kyr で空気を読んだコマンドのみを表示してくれる。しかし、これだけだとあまり役にたたないので、 anything-complete.el もインストールした状態で、 M-x anything-execute-extended-command を実行しよう。 anything-read-string-mode を有効にしているならば、単に M-x を押しただけで空気を読んだコマンドが出てくれる。

現在の anything-kyr-config.el の設定

いろいろな Emacs Lisp がからんでいるが、当該 Emacs Lisp が見付からない場合は無視されるのでいらないものはインストールする必要はありません。

行頭がコメントの場合、 linkd-insert-star linkd-insert-tag linkd-insert-link を提示する。要 http://www.emacswiki.org/cgi-bin/wiki/download/linkd.el 。 linkd.el によるリンクを作成する。提示しているところはこんな感じ。
http://www.rubyist.net/~rubikitch/archive/anything-kyr-linkd.png

multiverse.el で保存している場合、 multiverse-restore multiverse-diff-current multiverse-diff-other multiverse-forget を提示する。要 http://www.emacswiki.org/cgi-bin/wiki/download/multiverse.elバージョン管理システムを使うまでもない簡単なバージョン管理。

M-x rct-fork を実行している場合、 rct-fork-kill を提示する。要 rcodetools.el ( rcodetools パッケージ)。 rct-fork は rcodetools で require の overhead をなくす。

transient-mark-mode でリージョンをしているとき、 hlt-highlight-region hlt-highlight-regexp-region を提示する。要 http://www.emacswiki.org/cgi-bin/wiki/download/highlight.el 。リージョンをハイライトする。

hlt-highlight-region などでリージョンがハイライトされているとき、 hlt-unhighlight-region を提示する。ハイライトを取り消す。

M-x trace-function を実行しているとき、 untrace-all を提示する。関数呼び出しと返り値をトレースする。標準添付。

ファイル名が snippets/text-mode にマッチするとき、 yas/reload-all を提示する。要 yasnippet.el 。今アツい snippet 挿入ツールの yasnippet

ファイル名が emacs/yaoddmuse にマッチするとき、 yaoddmuse-browse-current-page を提示する。要 http://www.emacswiki.org/cgi-bin/wiki/download/yaoddmuse.el 。 yaoddmuse.el は次世代 oddmuse.el

メジャーモードが emacs-lisp-mode のとき、 byte-compile-file を提示する。

カスタマイズ

anything-kyr-commands-by-condition は S 式による条件で、 anything-kyr-commands-by-file-name はファイル名で、 anything-kyr-commands-by-major-mode はメジャーモードによって提示するコマンドを指定する。 (条件 コマンド コマンド...) 形式のネストしたリストだ。
詳しくは anything-kyr.el のユニットテストと anything-kyr-config.el を読んでね^^自力でカスタム設定できる人は下手な説明よりソースを読んだほうがわかりやすいから、まじで。

さあ、みんなの力で賢くしていこう!コメント次第取り込んでいくので、みなさんコメントよろしく。