我在使用正则表达式规则时遇到了很多麻烦,但我设法使用正常规则让它有点工作。我应该补充一点,这是一个新块,以及常规块。
{
name = 'source.js.embedded.html';
begin = '(?:^\s+)?(<)((?i:(aui[\:]script)))\b(?![^>]*/>)';
end = '(?<=</(aui[\:]script))(>)(?:\s*\n)?';
beginCaptures = {
1 = { name = 'punctuation.definition.tag.html'; };
2 = { name = 'entity.name.tag.script.html'; };
};
endCaptures = {
2 = {
name = 'punctuation.definition.tag.html';
};
};
patterns = (
{
include = '#tag-stuff';
},
{
begin = '(?<!</(?:aui[\:]script))(>)';
end = '(</)((?i:aui[\:]script))';
captures = {
1 = {
name = 'punctuation.definition.tag.html';
};
2 = {
name = 'entity.name.tag.script.html';
};
};
patterns = (
{ name = 'comment.line.double-slash.js';
match = '(//).*?((?=</(aui[\:]script))|$\n?)';
captures = {
1 = {
name = 'punctuation.definition.comment.js';
};
};
},
{
name = 'comment.block.js';
begin = '/\*';
end = '\*/|(?=</(aui[\:]script))';
captures = {
0 = {
name = 'punctuation.definition.comment.js';
};
};
},
{
include = '#php';
},
{
include = 'source.js';
},
);
},
);
}
XML 格式
<dict>
<key>begin</key>
<string>(?:^\s+)?(<)((?i:(aui[\:]script)))\b(?![^>]*/>)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.html</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.script.html</string>
</dict>
</dict>
<key>end</key>
<string>(?<=</(aui[\:]script))(>)(?:\s*\n)?</string>
<key>endCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.html</string>
</dict>
</dict>
<key>name</key>
<string>source.js.embedded.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#tag-stuff</string>
</dict>
<dict>
<key>begin</key>
<string>(?<!</(?:aui[\:]script))(>)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.html</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.script.html</string>
</dict>
</dict>
<key>end</key>
<string>(</)((?i:aui[\:]script))</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.js</string>
</dict>
</dict>
<key>match</key>
<string>(//).*?((?=</(aui[\:]script))|$\n?)</string>
<key>name</key>
<string>comment.line.double-slash.js</string>
</dict>
<dict>
<key>begin</key>
<string>/\*</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.js</string>
</dict>
</dict>
<key>end</key>
<string>\*/|(?=</(aui[\:]script))</string>
<key>name</key>
<string>comment.block.js</string>
</dict>
<dict>
<key>include</key>
<string>#php</string>
</dict>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
</array>
</dict>