ruby マークアップ用の lisp
2005-02-28
ruby のマークアップを大量にする必要があったので、意を決して xyzzy 用の lisp を初めて自分で書いてみた。といっても 既存のものを切り貼りしただけのようなものですが。以下のその lisp
;;ruby マークアップ用
(defun markup-ruby (from to)
(interactive "*r")
(save-restriction
(narrow-to-region from to)
(goto-char (point-min))
(replace-buffer "\\([^(]+\\)(\\([^)]+\\))" "<ruby><rb>\\1</rb><rp>(</rp><rt>\\2</rt><rp>)</rp></ruby>" :regexp t)))
(define-key ed::*html+-mode-map* '(#\C-c #\r) 'markup-ruby)
漢字(かんじ) のように、rb 要素になるテキストの後に全角カッコ付きで rt 要素の内容を書いて、それらをリージョンにしておきます。この場合だとリージョンの先頭は正確に「漢」の字にしておく必要があります。後ろは結構いい加減でも大丈夫です。その状態で 実行すると、<ruby><rb>漢字</rb><rp>(</rp><rt>かんじ</rt><rp>)</rp></ruby> てな感じに変換されるはずです。
キーバインドはとりあえず、C-c r になっていますがそこらあたりは適当に。
ちなみに、以前は VZ (何)用のマクロを自作して使っていたのですが、ついでにそれも書いておこう。
= ruby.def =
* m
80 ^\ "ruby" ?.
(mb!=2)?{&b(6) &m("文字ブロックでどうぞ").}
n=10, ;FEP が WX3の時
&j(0) f=mg.-9, &j(n) fr+, ;FEP ON
&g("ふりがな",30) (r<0)?>z
#y
"<ruby><rb>"
ek[+, #i ek], ;ek:出力後のカーソル位置更新
&?("</rb><rp>(</rp><rt>%s</rt><rp>)</rp></ruby>",pw)
:z fr-, &j(f) ;FEP 復帰
*
こっちはあらかじめ rt 要素の内容を書いておくのではなく、後から入れるタイプです。ルビを振りたい部分を文字ブロックにしておいてマクロ起動。rt 要素の内容を聞いてくるので答えてやるとそのようになります。て、こんなの使う人がいるのか。:p)
せっかくなので、意味なくルビ付きのものをなんか書いておきます。
蜻蛉 蝙蝠 蟷螂 蟋蟀
「ruby マークアップ用の lisp」へコメントをつける
- この記事の永続的 URI ならびに トラックバック ping URI
- http://diary.noasobi.net/2005/02/diary_050228a.html