EmacsでKindle風の読書環境を整える
プログラムを書くのに使うのはもちろんEmacsなのですが、最近はプログラムだけでなく長文ドキュメントや本なんか読むことが多いです。そういうとき、どうしてもEmacsから離れてChromiumで開いたり、長文になるとKindleに転送したりしてしまう。
だけど、Kindleはカスタマイズ性が低くて、ちょっとしたことをやりたいと思ってもできない。
たとえば、調べた英単語の履歴とか出せない。こういうハッカビリティの低さには憤りを感じます。
それなら全部Emacsでやってしまえばええやん、と思ってコツコツと改良し続け、そろそろノウハウが溜まってきたのでついでに紹介します。
Kindly Mode
Kindly Modeは、EmacsのバッファをKindle風の表示にしてくれるマイナーモードです。ほとんど見た目だけのことですが、以下の機能があります。
GitHubにpublishしたので、試したい人はAuto Installとかでインストールすると良いと思います。
(auto-install-from-url "https://raw.github.com/fukamachi/kindly-mode/master/kindly-mode.el")
その後、.emacsに以下のコードを書きます。
(require 'kindly-mode)
自動しおり機能
手間かかった割に意外とどうでもよかった機能ですが、Emacsの操作が止まったタイミングで自動でブックマーク(しおり)を打ってくれる機能がついています。
アイドルであれば常にしおりを打つのではなく、Kindleと同じで、既にあるブックマークより進んだ位置にカーソルがあったときだけしおりをつけてくれます。
つけたしおりはファイルに保存されるので、再びファイルを開いたときに「もっと先の位置にしおりをつけた場所があるけど、移動しはりますか?」と聞いてくれるので、y と答えると移動します。
おわりに
Emacsで読めることの利点は、Lispやシェルとの連携ができることです。
たとえば、僕はEmacsからM-x dictで英単語の意味を調べられるようにしています。辞書を引いたときはそれをログに書き出すようにしているため、あとで見直すことも可能です。
また、本の内容をコピペしたり、ツイートしたりブログに引用するのも楽かもしれないですね。あんまり活用してないけど。
これ作ったときに、「M-x follow-modeすると二画面でいい感じになるのでは!」と思ったけど、行間をいじってるといい感じに表示してくれなくて残念だった。
久しぶりにEmacs Lispを書いて思ったのは、やっぱLispめっちゃ書きやすいな〜、ということでした。おわり。