2011/07/20 (Wed)
【一応解決?】パターンとの格闘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
コメント