ティンカラー日記

こなゆき(a.k.a. p-snow)

10 Nov 2024

閲覧中のウェブページを Org 形式で開く

org-mode 中毒者のわたしとしては、どんな形式の文書でも Org で見たくなるわけです。もちろんウェブページも例外ではありません。長文が載ったページも Org でササッと折り畳みながら要点をすばやく把握できるようにしていきましょう。

今回は、EWWでウェブサイトを見ているときにすばやくページをOrg形式に変換して表示する、という方法を検討してみたいとおもいます。こちらが実装となります。

Elisp code to reopen EWW page in org

(defun my/eww-reopen-in-org (&optional level)
  "Convert the current HTML page source into an org format, then open it with level LEVEL entries displayed."
  (interactive "p")
  (let ((source (plist-get eww-data :source))
        (buffer (get-buffer-create "EWW page in org"))
        (org-startup-folded t))
    (with-current-buffer buffer
      (insert source)
      (shell-command-on-region (point-min) (point-max)
                               "pandoc - -f html -t org"
                               t t)
      (org-mode)
      (org-ctrl-c-tab level))
    (switch-to-buffer buffer)))

(with-eval-after-load 'eww
  (bind-keys :map eww-mode-map
             ("O" . my/eww-reopen-in-org)))

コードとしては至ってシンプルですね。ポイントとしてはファイルに書き出すことなくEmacsバッファ内で変換・表示を完結しているところでしょうか。変換エンジンとしてはおなじみpandocを使っております。キーバインドは Org で Open するから "O" にしました。

Happy Tinkering!

Tags: emacs eww org