<2016-09-20 Tue>「新生日刊Emacs」に対応させました。むしろgit cloneする方が早いです。

時は2014/11/06、事件は起きました…

事の発端はこのツイートから。

2014/11/06 14:27:47 rizaudo > Emacsにrubikichコマンドを実装してくれないか
な。 何か気になる面白パッケージとかがあれば、関係するるびきちさんのブログ
に飛ぶか、るびきちさんに聞けるような何か。
// by リザウド@Lisp大好きクラブ from YoruFukurou

エゴサーチしているのでこれに対してさりげなく空中リプライしてみると…

2014/11/06 14:30:42 rubikitch > http://rubikitch.com/tag/package:helm/
ようにパッケージ名を指定すればそれに関する記事が出てきますよー。
// by るびきち@日刊Emacs from twmode [Emacs on Debian]

すると…

2014/11/06 14:33:03 rizaudo > 今日の良い情報だ。 関数書いてewwで出せるよ
うにしよう。 関数名はhelp-me-rubikitch-sanとかそう言う名前で。
// by リザウド@Lisp大好きクラブ from YoruFukurou

2014/11/06 14:48:12 rizaudo >
(defun help-me-rubikitch-san (package)
(interactive "MPackageName:")
(eww-browse-url (concat "http://rubikitch.com/tag/package:" package "/")))
// by リザウド@Lisp大好きクラブ from YoruFukurou

当サイトから関連パッケージを eww で閲覧する
コマンドを書かれてしまいました(笑)

しかも…

2014/11/06 14:49:34 rizaudo > 今の関数をGIstにポイしました。 まあささっと
書いた関数なので、適当にどうぞ。
https://gist.github.com/rizaudo/46d66f8bf3b9f969278c
// by リザウド@Lisp大好きクラブ from YoruFukurou

2014/11/06 15:07:14 Isuzu_T > ( ゚∀゚)o彡゚ るびきち! るびきち!
助けてるびきちー! // by 垂木いすゞ(黒)(黒) from OpenTween [きさらぎ駅]

Gistに晒されました(笑)

ありがとうございます

当サイトが役立っていることが実感でき、
僕はとても嬉しいです。

感謝の気持ちでいっぱいです。

これからも役立つ情報を提供するよう
日々更新をしていくことを誓います。

昨日は金曜日でメルマガの予告記事を書く日だったので、
お礼が遅れてしまいました。

当サイトは特定のパッケージの記事を
一括して表示する機能があります。

まだ出来たてホヤホヤのサイトなので、
該当する記事がまだ存在しないこともありますが、
これから埋めていきます。

嬉しい反面、これからきちんと情報提供しなければ
という責任感・使命感に燃えました。

ewwはいいよー

ewwというのは、Emacs 24.4で標準添付された
Emacs組み込みブラウザのことです。

Emacs Lispで書かれているので遅いと思われがちですが、
HTML解析は libxml-parse-html-region という
C言語で書かれていたる関数で行っているので
速度は問題ありません。

EmacsのベテランさんにはEmacs/W3という
pure elispな激遅ブラウザのトラウマを
思い出してしまうかもしれませんが、大丈夫です。

Emacs上のブラウザといえば emacs-w3m が主流ですが、
Windowsの人には敷居が高いという問題があります。

Windowsでも問題なく簡単に使えるのは大きいですね。

ewwは表も画像もきちんと表示してくれるので、
Emacsで使えるブラウザとしては十分合格です。

eww-browse-url: ewwでURLを開く関数

eww-browse-url 関数は、ewwでURLを開く関数です。

この関数を応用すればプログラミング言語のオンラインドキュメントを
参照することが簡単にできるようになります。

ドキュメントを参照するのにわざわざブラウザとEmacsを
行き来する必要がないのは嬉しいですね。

ちょいと添削

ちなみに、 concat 関数よりも format 関数を使った方が
読みやすくなるし、シンボルも受け付けるのでおすすめです。

interactive の指定はsにすればinput methodの影響を受けません。

M -- Any string. Inherits the current input method.
s -- Any string. Does not inherit the current input method.

(defun help-me-rubikitch-san (package)
  (interactive "sPackageName: ")
  (eww-browse-url (format "http://emacs.rubikitch.com/%s/" package)))

本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。