次のようなコメントを定義する既存の言語定義を変更しようとしています。
<dict>
<key>match</key>
<string>(#) .*$\n?</string>
<key>name</key>
<string>comment.line.number-sign.myLanguage</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.myLanguage</string>
</dict>
</dict>
</dict>
これにより、a で始まる行#
がコメントとして識別され、それに応じて強調表示されます。私がやりたいことは、コメントされた単語をアスタリスクで囲み、それを別のものとして表示させることkeyword
です。ただし、これを追加するだけでは機能しません。
<dict>
<key>match</key>
<string>\*([^*]+)\*</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.myLanguage</string>
</dict>
</dict>
</dict>
ただし、行が で始まらない場合は機能する#
ため、両方のルールの間に競合があると想定しています。そのため、コメント内の で囲まれていないものすべてを識別する正規表現を使用することで、次のように回避できると考えました*
。
# This is a comment *this is something else* this is still a comment *not* yes
何か案は?