Emacs 24.4になってEmacs標準添付のブラウザ eww が話題になっていますね。

ewwは生まれたばかりで機能は少なく、これからの発展が楽しみです。

とにかくレンダリングが速いので emacs-w3mから乗り換える予定です。

そういえば、ewwで プロキシ を使う方法についてはまだ載っていませんね。

M-x apropos RET eww-.+proxy で調べても見付かりません。

結論を言うとewwでもプロキシは使えます。

ewwは内部で url-retrieve-synchronously 関数を使っており、
これのおかげでEmacsそのものがHTTPクライアントになっています。

よって、url.elの層でプロキシを設定すればいいのです。

そうすることでewwはもちろんのこと、
package.elなど他のネットワークアクセスが
伴うelispにも適用されます。

方法は2つあります。

  • 環境変数 http_proxy を設定する
  • url-proxy-services 変数を設定する

環境変数 http_proxy の設定は、
Emacsから起動する外部プログラムにも
波及するので前者がおすすめです。

たとえば、プロキシサーバが 127.0.0.1:8338 のときは

$ http_proxy=http://localhost:8338 emacs

のようにEmacsを起動するか、init.elに

(setq url-proxy-services '(("http" . "127.0.0.1:8338")))

の設定を加えます。

ファイヤーウォール を抜けることはもちろんのこと、
便利な ローカルプロキシ が使えます。

例えば polipo (squid) + adzapper広告避け できたりします。

コアはシンプルに保ち、様々な機能はプロキシに
丸投げするというewwの潔さは好感が持てます。

願わくばフックを充実させてほしいなと…

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