如何在VSCode扩展中自定义自定义语法标记的颜色

tif*_*fon 11 syntax-highlighting visual-studio-code vscode-extensions vscode-settings

TLDR; 我如何使用扩展名着色扩展名定义的语法,而不是实际上是用户必须启用的颜色主题?

我正在尝试将这个Sublime Text插件(​​ToDone)移植到VSCode.

它为待办事项列表创建语法,然后使用语法突出显示来强调重要任务,静音已完成的任务等.

我发现"editor.tokenColorCustomizations",通过自定义颜色主题.当我在用户设置中使用它时,它可以使用新语法,但是当我package.json#contributes在扩展清单的部分中使用它时,它会失败.

{
    "contributes": {
        "languages": [
            {
                "id": "todone",
                "aliases": [
                    "ToDone",
                    "To-Done"
                ],
                "extensions": [
                    ".todone",
                    ".todo"
                ]
            }
        ],
        "grammars": [
            {
                "language": "todone",
                "scopeName": "text.todone",
                "path": "./todone.tmLanguage"
            }
        ],
        "configurationDefaults": {
            "[todone]": {
                "editor.insertSpaces": false,
                "editor.tokenColorCustomizations": {
                    "textMateRules": [
                        {
                            "scope": "symbol.definition.task-heading.todone",
                            "settings": {
                                "foreground": "#ff8800"
                            }
                        }
                    ]
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,语法似乎没问题 - 它正是Sublime插件正在使用的内容,并且正确应用了用户设置中的颜色.此外,设置的格式似乎正常,因为"editor.insertSpaces"正在应用并且颜色在用户设置中存在时正在工作.

最后,我在扩展package.json中'Warning' 'Unknown editor configuration setting'"editor.tokenColorCustomizations"设置上收到了一条非常令人失望的消息.

那么,这个设置听起来没有启用扩展功能吗?

我看到的另一条可能的路线是使用装饰器.但是,我没有看到任何关于检查与文档中的一部分文本相关联的语法标记的内容,例如,某种方式来迭代文档的语法标记以应用装饰器.因此,与"editor.tokenColorCustomizations"相比,装饰器路线听起来很难.

任何关于如何使这项工作的建议将不胜感激.


编辑:到目前为止,代码在GitHub上:tiffon/vscode-todone

Car*_*rez 4

仅当您指定特定语言时它才会失败。如果我不指定 todone 扩展名,它对我有用。

"configurationDefaults": {
    "editor.insertSpaces": false,
    "editor.tokenColorCustomizations": {
      "textMateRules": [
        {
          "scope": "symbol.definition.task-heading.todone",
          "settings": {
            "foreground": "#ff8800"
          }
        }
      ]
    }
  }
Run Code Online (Sandbox Code Playgroud)