anything-c-source-occurが動かなかったのでちょっといじった。
なんだか定番らしいanything.elですが,ぼくはつい昨日(!)存在を知りました。 で,早速使ってみて「お〜?おー!」とかやってたんですが, anything-config.elで定義されているanything-c-source-occurが うまく動かない感じだったのでちょこっといじりました。
何がどううまく動かなかったかというと, anything-c-source-occurの一覧から選択すると,
Wrong number of arguments: (lambda (numline) "Replacement of `goto-line'." (goto-char (point-min)) (forward-line (1- numline))), 2
と,なってしまってたんですね。 行数はわかるけどその場所に飛べない,と。 すごく残念。
エラーの該当箇所を探したらanything-config.el中のanything-goto-lineでした。 anything-c-source-occurの定義中でanything-goto-lineを呼び出してる部分を見ると, 確かに引数の数が間違ってました。 定義では行数のみを与えるようになってますが,呼び出しでは行数と対象のバッファを渡しているようです。
そこで,余計だと思われる2つめの引数を取っ払ったらうまく動くようになりました。 以下はその修正点。
*** anything-config.org.el 2010-02-07 13:51:49.000000000 +0900 --- anything-config.el 2010-02-07 13:51:17.000000000 +0900 *************** *** 3733,3739 **** (let ((lines (split-string (buffer-string) "\n" t))) (cdr lines))))))) (action . (("Goto line" . (lambda (candidate) ! (anything-goto-line (string-to-number candidate) anything-c-source-occur-current-buffer))))) (requires-pattern . 1) (volatile))) ;; (anything 'anything-c-source-occur) --- 3733,3739 ---- (let ((lines (split-string (buffer-string) "\n" t))) (cdr lines))))))) (action . (("Goto line" . (lambda (candidate) ! (anything-goto-line (string-to-number candidate)))))) (requires-pattern . 1) (volatile))) ;; (anything 'anything-c-source-occur)
バージョンアップしたときに定義が変わったんですね。きっと。