我想在 markdown 中添加一些额外的语法高亮。
我定义了一个注入语法:
{
"scopeName": "markdown.mytodos",
"injectionSelector": "L:text.html.markdown",
"patterns": [
{ "include": "#todo" }
],
"repository": {
"todo": {
"match": "^[ \t]*o .*",
"_comment": "Line start, tabs or spaces, then literal `o` and a space",
"name": "entity.name.tag.css"
}
}
}
结果:
我希望看到我对这两个例子的规则,但它只适用于第一个:
foo
o bar <- correct scope
foo
o bar <- wrong scope (meta.paragraph.markdown)
所以看起来我的范围没有占用,即使正则表达式匹配(单独测试)。
我查了一下,Markdownmeta.paragraph.markdown
用这个begin
规则定义:
(^|\\G)[ ]{0,3}(?=\\S)
这个while
规则:
(^|\\G)((?=\\s*[-=]{3,}\\s*$)|[ ]{4,}(?=\\S))
我目前的理论是,这种未while
封闭的状态阻碍了我的规则。
问题:
- 开放规则是否会阻止任何其他匹配的发生?
- 我如何告诉我的 vscode/textmate 语法我希望它一直“赢”,即使在不同的范围内?
我努力了:
- 使用开始/结束规则而不是
match
(无变化) - 将语言定义为的子集,
meta.paragraph.markdown
而不是text.html.markdown
:("injectionSelector": "L:meta.paragraph.markdown"
不按预期添加嵌套范围)