Visual studio code TextMate语法和主题如何与VSCode配合使用?

Visual studio code TextMate语法和主题如何与VSCode配合使用?,visual-studio-code,monaco-editor,tmlanguage,Visual Studio Code,Monaco Editor,Tmlanguage,VSCode构建在MonacoEditor之上,MonacoEditor不支持Textmate语法和主题。但无论如何,VSCode使之成为可能。我很好奇VSCode是如何做到这一点的 我这样问是因为我正在制作一个代码编辑器(基于摩纳哥),它支持TextMate语法和主题。但我无法理解我如何才能做到这一点 虽然有像monaco textmate这样的软件包使textmate语法与monaco一起工作,但语法突出显示是。textmate语法取决于一个名为的特定正则表达式实现/库,它是用C实现的。mo

VSCode构建在MonacoEditor之上,MonacoEditor不支持Textmate语法和主题。但无论如何,VSCode使之成为可能。我很好奇VSCode是如何做到这一点的

我这样问是因为我正在制作一个代码编辑器(基于摩纳哥),它支持TextMate语法和主题。但我无法理解我如何才能做到这一点


虽然有像
monaco textmate
这样的软件包使textmate语法与monaco一起工作,但语法突出显示是。

textmate语法取决于一个名为的特定正则表达式实现/库,它是用C实现的。monaco的设计目的是在浏览器中运行,而且那里可用的JavaScript正则表达式引擎与Oniguruma不兼容。所有这些都将在的“为什么编辑器不支持TextMate语法?”一节中详细解释。它还提到可能最终编译Oniguruma来解决这个问题

VSCode本身使用TMLanguage处理,它将Oniguruma库作为本机依赖项。VSCode可以具有本机依赖项,因为它不在浏览器环境中运行

据了解,它实际上主要基于vscode textmate:

此存储库中99%的代码直接从
vscode textmate

它确实使用了前面提到的WASM方法:

monaco textmate
依赖于
onigasm
包在浏览器中提供
oniguruma
regex引擎。onigasm本身依赖于
WebAssembly

至于为什么语法突出显示在monaco textmate中并不总是像预期的那样工作。。。我不知道,我想这只是实现中的一个bug。也许等待维护人员的响应,您链接的问题是相当新的


至少从概念上讲,它不应该有理由不能实现VSCode所具有的相同语法,因为它使用相同的正则表达式风格。

感谢anwser。但我明白为什么tmgrammers不能与摩纳哥合作。至于我,我知道tmgrammer为一个令牌生成多个作用域,但摩纳哥不支持多个作用域。所以,包作者最终选择了最后一个范围。我想这可能就是突出显示不能正常工作的原因。但无论如何,vscode能够解决这个问题。我想知道vscode是如何做到的。我的意思是,在一天结束时,vscode也只使用其中一个作用域进行高亮显示,一个标记毕竟只能有一种颜色。我认为,它只是使用了最具体的范围。