xyzzyでHTMLの実体参照トグル
HTMLの中でサンプル的にHTMLソースを書く場合、「<b>強調</b>」てな感じで実体参照で書いてやる必要があります。この変換がなかなか面倒で、フォームにHTMLを入力したら実体参照に変換してくれるWebアプリなんかを自作してたんですが、やっぱりテキストエディタで直接やりたいと思ってました。
で、ちょうどいい感じで見付かったのが、chez sugiさんで公開されているHTML入力サポートのライブラリ。HTMLを実体参照文字に変換したり、逆に実体参照をHTMLに変換したりという機能が備わっています。
デフォルトだと"""、"&"、">"、"<"の4文字は変換対象にならなかったり(オプションで設定可能)、キーバインドが振られているのが文書全体の変換だったり(リージョンの変換はコマンドのみ提供)します。自分の用途だと、むしろこの4文字をリージョンで操作したいので、html-support.l を少し変更して組み込みました。
391| (or flag (not (member key '("quot" "amp" "lt" "gt") :test 'equal)))) ↓ 391| (or flag (member key '("quot" "amp" "lt" "gt") :test 'equal)))
411| (or flag (not (member key '(34 38 60 62))))) ↓ 411| (or flag (member key '(34 38 60 62))))
420| (define-key keymap '(#\C-c #\e) #'character-to-entity) 421| (define-key keymap '(#\C-c #\c) #'entity-to-character) ↓ 420| (define-key keymap '(#\C-c #\e) #'character-to-entity-region) 421| (define-key keymap '(#\C-c #\c) #'entity-to-character-region)
こんな設定に変更して、バリバリHTML書いておりますです。めっちゃ快適っすわ。