Hatena::Groupvim

ドゥユーワナビカマヴィマー?

2011/07/20 (Wed)

【一応解決?】パターンとの格闘2

07:28 | 【一応解決?】パターンとの格闘2 - ドゥユーワナビカマヴィマー? を含むブックマーク はてなブックマーク - 【一応解決?】パターンとの格闘2 - ドゥユーワナビカマヴィマー?

今すごく詰まっていることがあります。

それは、たとえば、

hoge ### fuga lin

というテキストがあって、

通常###から行末までをハイライトさせるけれど、

行末にこのように

hoge ### fuga lin #

"#"が付くと、以降は文字列"#$"を発見するまでは、行末であってもregionが継続するというものです。

すごく簡単に見えて、行末の消費が厄介なのです。

syntax region Highlight start=/###/ end=/$/ contains=Expand
syntax region Expand start=/#$/ end=/#\$/ contained transparent

とやった程度では、二番目の条件である、拡張したときに"#$"で終わるというのを満たせません。("#$"のある行の行末まで伸びてしまいます)。

逆にkeependやexcludenlを使ったら、nextgroupを指定しても読み込まずにハイライトが終了してしまいます。

思ったよりも難問で手を焼いています。


一応解決↓

syntax region sowMetaComment start=/###/ end=/.\ze#$\|$\|#\$/ skipnl skipwhite  nextgroup=sowMetaCommentContinue
syntax region sowMetaCommentContinue start=/#$/ end=/#\$/ keepend contained