2007年5月4日金曜日

emacsでHTMLメタ文字をエスケープ

HTMLのソースを貼り付けたいときは、HTMLのメタ文字 「&、<、>、"」 をそれぞれ「&amp;、&lt;、&gt;、&quot;」 に変換しないといけない。
Emacsで自動で変換してくれるelispはないかと探したけど、ないので適当に書いてみた。

(defun html-quote (start end)
"選択範囲の「< > & 」と引用符記号「\"」をエスケープする"
(interactive "r")
(save-excursion
(save-restriction
(narrow-to-region start end)
(goto-char (point-min))
(while (re-search-forward "<" nil t)
(replace-match "&lt;"))
(goto-char (point-min))
(while (re-search-forward ">" nil t)
(replace-match "&gt;"))
(while (re-search-forward "\"" nil t)
(replace-match "&qute;"))
(while (re-search-forward "&" nil t)
(replace-match "&amp;amp;amp;amp;amp;"))
)))


使いかたは上の関数を ~/.emacs にでも貼り付けて保存し、変換したいHTML文書を選択範囲してから、M-x html-quote で実行すれば、エスケープしてくれる。

20080718:追記

こちらのEmacsで見たままの状態をHTMLに変換する記事もどうぞ。

0 件のコメント: