1

VIMで使用する独自のC拡張の構文ハイライトを実装しています。
構文は次のとおりです。

int __event(foobar) my_foobar_function()
{
    //whatever
    if(foobar)
        // do something
}

今私がしたいのはハイライトすることな __event(foobar)ので、私はこれを書きました:

syn region xREG start=/__event(/ end=/)/ contains=xFOO
syn keyword xFOO foobar contained

hi xREG ctermfg=darkblue
hi xFOO ctermfg=cyan

これにより__event()正しく強調表示されますが、のfoobarif(foobar)も強調表示されます。

私の質問は、xFOOグループをxREGでのみ強調表示され、他の場所では強調表示されないように制限するにはどうすればよいですか。

ありがとうございました。

4

1 に答える 1

2

既存の構文( Cなど)を拡張する場合は、既存の構文項目を考慮する必要があります。次の行は、 :を介してグループをsyntax/c.vim含める原因になります。xFOOALLBUT=

syn region  cParen      transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell

幸い、拡張ポイントが提供されます。グループを@cParenGroupクラスターに追加する必要があります。

syn cluster cParenGroup add=xFoo

それでうまくいくはずです!

于 2013-02-22T19:25:05.080 に答える