首页 > 解决方案 > 如何将 TextMate 语法注入 VS Code 中的 Markdown 标题?

问题描述

我想[ ]在 VS Code 的降价文件中选择语法高亮。

我可以[ ]使用以下目标regex(?<=\s)\]|\[(?=\s)。但是[ ],当它是标题的一部分时不会匹配。

作为一个最小的例子,在package.json我有以下内容:

"contributes": {
    "grammars": [
        {
            "scopeName": "markdown.todo",
            "path": "./syntaxes/todo.markdown.json",
            "injectTo": ["text.html.markdown"]
        }
    ]
}

然后,在todo.markdown.json我有:

{
    "scopeName": "markdown.todo",
    "injectionSelector": "L:text.html.markdown",
    "patterns": [
        { "include": "#item-todo" }
    ],
    "repository": {
        "item-todo": {
            "name": "item.todo",
            "match": "(?<=\\s)\\]|\\[(?=\\s)"
        }
    }
}

最后,在 VS Code 中,settings.json我使用以下方法应用颜色:

"editor.tokenColorCustomizations": {
    "textMateRules": [
        {
            "scope": "item.todo",
            "settings": {
                "foreground": "#FF0000"
            }
        }
    ]
}

我可以在下面看到它[ ]被选中,但不是在标题内时。

在此处输入图像描述

当我检查令牌和范围时,我看到了几个textmate scopes. 我不确定这是否相关,但似乎 VS Code 正在根据markup.heading范围突出显示降价标题。但是,数组markup.heading中不存在。textmate scopes

在此处输入图像描述

我尝试更改为"injectionSelector": "L:heading.1.markdown"and/or "injectTo": ["heading.1.markdown"],但无论我指定什么选择器,我似乎都无法[ ]在标题中匹配。

标签: visual-studio-codemarkdownvscode-extensionstmlanguage

解决方案


推荐阅读