emacsで、anythingを使用してelisp-jaマニュアルを引く

2009-12-05 - Secondary Storageで、elispマニュアルの日本語をいれたのですが、今回は、そのマニュアルをanythingを使用して引けるようにします。

anything-config.elに定義されている、 anything-c-info-elisp-ja を元に作成しました。
下記を.emacsに追記して、 また、anything-sources に anything-c-source-info-elisp-ja を追加してください。


私は、elisp(英語版)と、elisp-ja(日本語版)の二つのinfoを共存させているので、下記のような定義が必要になっています。もし、日本語のelispマニュアルのインデックス名が「elisp」であれば、下記設定をせずとも表示できると思います。

;; Info Elisp-JA
(defvar anything-c-info-elisp-ja nil)
(defvar anything-c-source-info-elisp-ja
  `((name . "Info Elisp")
    (init . (lambda ()
              (save-window-excursion
                (unless anything-c-info-elisp-ja
                  (with-temp-buffer
                    (Info-find-node "elisp-ja" "Index")
                    (setq anything-c-info-elisp-ja (split-string (buffer-string) "\n"))
                    (Info-exit))))))
    (candidates . (lambda ()
                    (loop for i in anything-c-info-elisp-ja
                          if (string-match "^* [^ \n]+[^: ]" i)
                          collect (match-string 0 i))))
    (action . (lambda (candidate)
                (Info-find-node "elisp-ja" "Index")
                (Info-index (replace-regexp-in-string "* " "" candidate))))
    (volatile)
    (requires-pattern . 2)))
;; (anything 'anything-c-source-info-elisp-ja)

;; info情報の再構築
;; そうしないと anything-c-source-info-elisp-ja の開く際にエラーとなる
(info-lookup-reset)

ディレクトリ毎に分けられたinfoを一元化してあげないと、anythingを起動するときにelisp-jaのノードがないといわれるため、「(info-lookup-reset)」をしてinfo情報の再構築を行っています。

下記が実行した画面です。