読者です 読者をやめる 読者になる 読者になる

ぐるっとぐりっど

日曜プログラマがいろいろ試してみたことを、後の自分のためにまとめておく場所

書籍の情報を検索して挿入するためのHelmインタフェースを作ってみた

emacs

前回grugrut.hatenablog.jpの続き

やりたかったこと

org-modeで本の記録を取るのに、いちいち著者情報を手入力するのがきつすぎるので、検索していいかんじにバッファに挿入させたかった。
で、それを実現するのにHelmインタフェースで作るのが、それっぽいかんじで良さそうだったので、そうした。

HelmインタフェースもAnythingインタフェースも作ったことなかったので、やってみたかったというのもある

できたもの

github.com

使いかた

requireして、M-x helm-booksするといつものHelmインタフェースが表示される。
そして入力すると入力した文言に対してgoogle books apiに対してクエリが発行されて結果がリストとして表示される。

f:id:grugrut:20170320153659p:plain

Actionとしては、挿入する文章を変数"helm-books-custom-format"で設定することができる。

org-modeとの統合

org-captureでは、テンプレートに

(setq org-capture-templates
        '(("b" "book memo" entry
           (file (concat org-directory "book.org"))
           "* %(helm-books)"
          ))))

のように、%(sexp)とすることで、S式を埋め込むことができる。
これを利用することで、このテンプレートを呼び出すと、自動でhelm-booksが呼ばれ、本を検索し、必要な情報をプロパティとして設定したメモを簡単に取ることができる。

これはすごい

今後

  • ActionがInsertしかないので、他のActionを増やす
  • 情報源がgoogle books apiだけだが、検索結果が気持ち心許無いので、他のAPIからも取得できるようにする

Emacs Lispテクニックバイブル

Emacs Lispテクニックバイブル