TLDR; 如何使用扩展程序对扩展程序定义的语法进行着色,而不是实际上是用户必须启用的颜色主题?
我试图将此Sublime Text plugin (ToDone)移植到VSCode。
它为待办事项列表创建语法,然后使用语法突出显示强调重要任务,静音已完成的任务等。
我通过Customize a Color Theme找到了"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"
}
}
]
}
}
}
}
}
到目前为止,语法似乎没问题 - 它正是Sublime插件正在使用的内容,并且正确应用了用户设置中的颜色。此外,设置的格式似乎没问题,因为正在应用"editor.insertSpaces"
并且当用户设置中存在颜色时这些颜色正在工作。
最后,我在扩展package.json中的'Warning' 'Unknown editor configuration setting'
设置上收到了一条非常令人失望的"editor.tokenColorCustomizations"
消息。
那么,这个设置听起来没有启用扩展名吗?
我看到的另一条可能的路线是使用装饰器。但是,在检查与文档中的部分文本相关联的语法标记时,我没有看到任何内容,例如某种方式迭代文档的语法标记来应用装饰器。因此,与" editor.tokenColorCustomizations"相比,装饰器路线听起来很艰难。
非常感谢任何有关如何完成这项工作的建议。
修改:到目前为止,该代码位于GitHub上:tiffon/vscode-todone