anything.elアップデート・重大なbug fix

anything.elをアップデート。変更点は以下の通り。

M-x install-elisp http://www.emacswiki.org/cgi-bin/wiki/download/anything.el

無限ループで暴走するのを修正

inhibit-quitのせいで暴走する問題を解決。以下の2つのコマンドを実行したら今までは暴走していたが、現バージョンではC-gで中断することができる。

(defun a ()
  (interactive)
  (anything '(((name . "test")
               (delayed)
               (candidates . (lambda () (while t)))))))
(defun b ()
  (interactive)
  (let ((anything-input-idle-delay 0.2))
    (anything '(((name . "test")
                 (delayed)
                 (candidates . (lambda () (while t))))))))

画面切替時のちらつきを解消

anythingでアクションを実行する直前やC-gを押して元の画面に復帰する際、ちらつきがあったので解消できるようにした。原因は set-frame-configuration で frame configuration を復帰しているため。
以下の設定でset-window-configurationを代わりに使うようになるのでちらつきが解消される。そのかわりフレームについては復帰しなくなる。

(setq anything-save-configuration-functions
      '(set-window-configuration . current-window-configuration))

ソースコードを整頓

ソースコードを機能ごとに整理した。これで読みやすくなったと思う。

現在選択されている行を削除するコマンド

anything-delete-current-selectionコマンドを新設。バッファやファイルなどを削除するpersistent-actionに使える。

anything-resumeでバッファごとにresumeできるようになった

バッファごとにanything-sourcesのデータを保持するようになったため、複数のanythingバッファを使っているとき、バッファを指定して復元できるようになった。
C-u M-x anything-resumeを実行してみよう。

anything-updateの若干の高速化

変数anything-quick-updateをtにすると、*anything*バッファが画面内に見えているもののみ更新されているので、更新が速くなる。画面外のは一時的にdelayed情報源扱いになるので、少し待てば画面外の情報源も出てくる。たくさんの情報源を設定している人におすすめ。

delayed情報源の出現順序を正した

(delayed)を設定している情報源は、今まで逆順に表示されていたので正しく直した。nreverse一発。

anything-candidate-bufferのバグ修正

(anything-candidate-buffer 'local)の後に(anything-candidate-buffer 'global)を実行してもローカルなcandidate bufferが選択されるバグを修正。