[xyzzy:07957] 複数の tag に対して正規表現で色をつけたい
- Subject: [xyzzy:07957] 複数の tag に対して正規表現で色をつけたい
- From: boc <boc@xxxxxxxxxxxxx>
- X-mailer: Datula version 1.51.08.01 for Windows
遅ればせながら?明けましておめでとうございます。
boc です。今年もよろしくお願いします。
私は HTML + CSS で下記(*1)のような Source で表を書いているのですが、
どこからが表で、行の変わり目は… ということをもっと視認しやすいよう、
複数の tag をまたがる正規表現(*2)を書いたのですが上手く色がつきません。
HTML の keyword file にも(もちろん正規表現でなく)書いてみたり、
"HTML" の 954-955 行の
<table
</table
を削ってみたりと自分なりに試してみたのですが、どうにも上手くいきません。
複数の tag をまたがる形では現行では正規表現で色はつけられないのでしょうか?
単に私の正規表現がマズいだけなのでしょうか…。
――― *1 ここから ――――――――――――――――
<table cellspacing="0" class="vis w725"><tr>
<th class="ta1">w80 Checked Date
</th> <th class="ta2">w190 Title of Site
</th> <th class="ta3">w447 URI / Comment
</th></tr><tr>
<td class="ta1">w80 2002/01/xx
</td> <td class="ta2">w190
</td> <td class="ta3">w447
うんたら<br/>
すんたら<br/>
こーたら
</td></tr></table>
表示例は取り敢えずここを見て下さい。(要 CSS。IE 5.01 SP2 で確認。)
http://www.globetown.net/~boc/xyzzy/ml/2002-0105.html
――― *1 ここまで ――――――――――――――――
――― *2 ここから ――――――――――――――――
; ref. [ChangeLog 0.2.2.202 / ML:07264]
(defvar *boc-html-color-regexp*
(compile-regexp-keyword-list '(
("</?table" t (:color 0 9 :line) t)
("\\(^</t[dh]></tr><tr>$\\)" t (:color 0 9) t)
; "\\(\\(</t[dh]>\\)?\t<t. class=\".*ta[1-3]\">\\)"
; だと text では働くが、html だと始めの </td> を認識しない。何故?
("^\\(\t<t. class=\".*ta1\">\\)" t (:color 0 15) t)
("^\\(</t[dh]>\t<t. class=\".*ta[23]\">\\)" t (:color 0 15) t)
("^\t\t\t" t (:color 0 15) t)
)))
(add-hook 'ed::*html-mode-hook* 'boc-html-mode-hook)
(defun boc-html-mode-hook ()
(make-local-variable 'regexp-keyword-list)
(setq regexp-keyword-list *boc-html-color-regexp*))
――― *2 ここまで ――――――――――――――――
私の理想としては、
正規表現で、背景色だけを変えて、
keyword の文字色はそのままというようにしたいのですが。
と言っても、いちいち keyword と 正規表現 keyword の衝突の場合、
双方を融合させる形で表示するのは凄く大変なような気がするので、
(HTML で h1 内の string なども色分け表示されていませんし)
取り敢えずは正規表現のグループ指定でしのげればそれで十分なのですが。
上 (*1) の場合、各 tag 内で
/?table keyword-1
/?t[dh} keyword-1
cellspacing\\|class keyword-2
\".*\" string
の色付けを指定してやればいいのかな…と思っています。
皆様からのご指摘の程 宜しくお願い致します。
あ、今使っているのは xyzzy 0.2.2.220 です。
-----
boc <boc@xxxxxxxxxxxxx>