markdownをemacsで書いていてプレビューする時、markdown-modeのプレビュー機能を使っていたのですが、これだといちいちブラウザが立ち上がってちょっと面倒に感じていました。せっかくemacsを使っているのだから、emacsの中でプレビューしたいと思いました。少し調べてやってみると、意外と簡単に出来てしまったので、やり方を纏めておきます。
w3m をインストールする。
sudo apt-get install w3c
emacs上でw3mを動かすために、emacs-w3m をインストールする。
list-packagesでw3mをインストールする。
markdownをHTMLに変換するためのツールとして、grip を使う。 gripはpythonで書かれていて、インストールするには pip が必要となる。
python3でgripを動かすには、python3のpipをインストールする必要がある。
sudo apt-get isntall python3-pip
pip3でgripをインストールする。
sudo pip3 install grip
~/.emacs/init.el
に、emacs-w3mの設定、markdown-modeの設定を追記する。
;;
;; w3m
;;
(require 'w3m)
(defun w3m-browse-url-other-window (url &optional newwin)
(let ((w3m-pop-up-windows t))
(if (one-window-p) (split-window))
(other-window 1)
(w3m-browse-url url newwin)))
;;
;; markdown-mode
;;
(require 'markdown-mode)
(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))
(defun markdown-render-w3m (n)
(interactive "p")
(message (buffer-file-name))
(call-process "/usr/local/bin/grip" nil nil nil
"--export"
(buffer-file-name)
"/tmp/grip.html")
(w3m-browse-url-other-window "file://tmp/grip.html"))
(define-key markdown-mode-map "\C-c\C-p" 'markdown-render-w3m)
ここまでの設定により、markdown-modeでmarkdownファイル編集中に、C-c C-p
すると、
gripが起動してmarkdownをHTMLに変換、別フレームにw3mでHTMLを表示する、という仕組みが出来上がります。