Использование блоков кода уценки с css
дает вам подсветку синтаксиса CSS, но не дает мне подсветку синтаксиса моего пользовательского языка «Ссылка» (у меня есть tmLanguage.json для этого здесь).
Как заставить его использовать подсветку синтаксиса пользовательского языка в моих блоках кода Markdown с тройными обратными кавычками в VSCode?
В VSCode нет простого способа сделать это, и поддержка была помечена как выходящая за рамки (#71888). Расширения могут вручную вводить поддержку пользовательских языков в ограничения кода уценки:
https://github.com/mjbvz/vscode-fenced-code-block-grammar-injection-example/tree/master
В package.json добавьте язык и грамматику для внедрения уценки, заменив LANGUAGENAME идентификатором вашего языка:
{
…
"contributes": {
"languages": [
…,
{
"id": "LANGUAGENAME-markdown-injection"
}
],
"grammars": [
…,
{
"language": "LANGUAGENAME-markdown-injection",
"scopeName": "markdown.LANGUAGENAME.codeblock",
"path": "./syntaxes/LANGUAGENAME-markdown-injection.json",
"injectTo": [
"text.html.markdown"
],
"embeddedLanguages": {
"meta.embedded.block.LANGUAGENAME": "LANGUAGENAME"
}
}
]
}
}
Добавьте файл ./syntaxes/LANGUAGENAME-markdown-injection.json
, заменив LANGUAGENAME идентификатором или областью действия вашего языка по мере необходимости:
{
"fileTypes": [],
"injectionSelector": "L:text.html.markdown",
"patterns": [
{
"include": "#LANGUAGENAME-code-block"
}
],
"repository": {
"LANGUAGENAME-code-block": {
"begin": "(^|\\G)(\\s*)(\\`{3,}|~{3,})\\s*(?i:(LANGUAGENAME)(\\s+[^`~]*)?$)",
"name": "markup.fenced_code.block.markdown",
"end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
"beginCaptures": {
"3": {
"name": "punctuation.definition.markdown"
},
"4": {
"name": "fenced_code.block.language.markdown"
},
"5": {
"name": "fenced_code.block.language.attributes.markdown"
}
},
"endCaptures": {
"3": {
"name": "punctuation.definition.markdown"
}
},
"patterns": [
{
"begin": "(^|\\G)(\\s*)(.*)",
"while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
"contentName": "meta.embedded.block.LANGUAGENAME",
"patterns": [
{
"include": "source.LANGUAGENAME"
}
]
}
]
}
},
"scopeName": "markdown.LANGUAGENAME.codeblock"
}