個人所有のドメイン宛に届くメールは Emacs Lisp で書かれた Mew で読み書きしている。
メール内のリンクを開くのに、Chrome などの外部ブラウザを使っていたんだけど、そういえば eww でできるんじゃないか?と思って調べてみた。
サンプルのメールはこんな感じ。これはテキストとHTMLのマルチパートメールのテキスト部分が表示されているところ。
このメール内の URL にカーソルを合わせて、g
キーを押すと、裏で mew-browse-url-at-point
が実行される。
標準では、システムが優先するブラウザ(オレの場合だと Chrome)で該当の URL を開く動作になるけど、mew-browse-url-at-point
が内部で使っている browse-url.el
の設定を変えてあげれば良いのだと知った。
次のように browse-url-browser-function
を eww-browse-url
に設定してやれば良いようだ。
(setq browse-url-browser-function 'eww-browse-url)
こうすると、Mew で読んでいるメール内の URL に合わせて g
キーを押すと、Emacs 内部に eww
を使って表示される。
ウインドウの切り替えとかが発生しなくなるので、ちょっとした確認ならこちらの方が便利かもなぁ。しばらくはこれで使ってみよう。
Emacs24.4 + Mewで、HTMLのシングルパートメールもしくはマルチパートメールのHTMLパートで<br>"." (mew-summary-analyze-again)実行時のEmacs内表示を、w3m + emacs-w3mの代わりにewwで、<br>実現することはできないでしょうか。
お騒がせしています。前件の「w3mによらない、HTMLパートのEmacs内レンダリング」は自己解決した?かもです.
おお、反応できておらずすみません。もし良かったら、どのように解決できたのか教えて頂けませんか??
(mew-summary-analyze-again)実行時に呼ばれ、HTMLなMIMEパートを処理しデフォルトが<br>mew-mime-text/html-w3m関数であるmew-prog-text/htmlを、ewwのベースでshrパッケージの<br>shr-render-region関数に設定し(なおし)ただけです。<br><br>ただし、shrパッケージでshr-render-region関数は24.4から新たに定義されたこと、<br>emacs-w3mの存在による不具合有無は深く追っていないため、emacs-w3mパッケージを導入せず<br>.mewでのその関連設定が機能しないようにした上、安全のために以下のように実際にはしています。<br>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br>;;;<br>;;; Using "shr" (Simple HTML Renderer) for in-frame HTML rendering<br>;;;<br>;;; The \\[shr-render-region] is newly introduced since Emacs 24.4.<br>;;;<br>;;; The "emacs-w3m/mew-w3m" package w/ "w3m" is no longer needed.<br><br>(when (and (fboundp 'shr-render-region)<br> ;; \\[shr-render-region] requires Emacs to be compiled with libxml2.<br> (fboundp 'libxml-parse-html-region))<br> (setq mew-prog-text/html 'shr-render-region)) ;; 'mew-mime-text/html-w3m<br><br>マルチパートメールのHTMLパートのレンダリングのみ追って行なった上述の設定は、HTMLのシングル<br>パートメールにも有効のようです。(ここも深く追っていません。結果的に良さそう、としました)<br><br>「自己解決した?かも」と言ったのは、最後の1行のような設定で果たして本当によかったのか、<br>副作用はないのか、については自信がないからです。<br><br>いかがなものでしょうか。
こちらでも試してみました。うまく動いているように見えます!<br><br>Mew の内部については、僕もあまり詳しいわけではないのですが、<br>変更するなら mew-prog-text/html の上書きだよなぁとは思っていました。<br><br>だいぶ良いのではないかと思います!<br>情報ありがとうございました!
このスレの本題に近づく話ですが、<br>URLが dokosoko/doresore.html(arekore1/arekore2) で「(arekore1/arekore2)」はURLの一部ではなく<br>単なるこちらの注釈の場合、Emacs 24.3までは `thing-at-point-url-path-regexp' をデフォルトの<br>"[^]\t\n \"'<>[^`{}]*[^]\t\n \"'<>[^`{}.,;]+" から「()」を2箇所追加して<br>"[^]\t\n \"'()<>[^`{}]*[^]\t\n \"'()<>[^`{}.,;]+" に設定・変更することで、<br>"g" (mew-browse-url-at-point) に限らず (mew-browse-url-at-mouse) や<br>(browse-url-at-point)、(browse-url-at-mouse) も、「(arekore1/arekore2)」部を除いたもの<br>dokosoko/doresore.html をURLとして返してくれていました。<br><br>Emacs 24.4では、`thing-at-point-url-path-regexp' を前記のいずれに設定しても「(arekore1/arekore2)」部を<br>除いてくれません。同変数周りの定義が変わっているのは見て取れるが、対策がわかりません。<br><br>ヒントがあればお願いします。