0

vim用に独自のObjective-C強調表示スキームを構築しようとしています。問題は、containedこのルールを含むルールがなくても適用されるルールを定義すると、それが適用されることです。テスト目的でobjc.vimにこれがあります:

syntax clear
runtime! syntax/c.vim
syn match firstComponent "[_A-Za-z0-9()]*:" contained
hi link firstComponent Function

これは、c.vim に多くのルールがありcontained=ALLBUT、私のルールも含まれているためだと思われます。これを回避する方法はありますか?

ありがとう。

PS以前に使用していたメソッドが遅いため、メソッドを強調表示する独自のスキームを構築しています。特に、メソッドシグネチャのマッチングが遅いため、それを示す削減を行いました。これは上記の問題が原因である可能性があると思います。複雑な内部ルールはどこでも一致します。

4

1 に答える 1

1

あなたの勘は正しいです。これは によるものcontained=ALLBUTです。既存の構文の再利用には制限があります。特定の要素をオーバーライドしようとすることはできますが:syntax clear、これが非常に面倒になるポイントがあります。

元の構文の作成者がまだ構文を維持している場合は、これについて話し合い、パッチを提出して統合を容易にするか、共通のサブ構文を完全に分割して、それを基に使用できるようにすることもできます。そうでない場合、または結合が望ましくない場合は、重複を意味する場合でも、独自の完全に別個の構文の作成を開始することをお勧めします。

于 2013-05-28T10:37:43.863 に答える