Я хотел бы добавить некоторые дополнительные подсветки синтаксиса к уценке.
Я определил грамматику инъекций:
{
"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)
Таким образом, похоже, что моя область видимости не берется, даже если регулярное выражение совпадает (проверено изолированно).
Я посмотрел, и Markdown определяет meta.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"
(не добавляет вложенную область видимости как положено)