如何向现有语言(例如打字稿)添加令牌?

问题描述 投票:0回答:2

我可以使用 setMonarchTokensProvider 定义令牌,但这并没有真正的帮助,因为我只能创建一种新语言或覆盖打字稿。无论哪种情况,我都没有我仍然想要拥有的其余打字稿令牌。

我只想添加一个标记,该标记在此编辑器的上下文中具有特定含义,我想对其进行着色。同时仍然拥有所有打字稿。

这是我到目前为止所拥有的(取自操场示例),但是这样打字稿的其余部分就消失了:

monaco.languages.setMonarchTokensProvider('typescript', {
    tokenizer: {
        root: [
            [/\pvm.*/, "custom-error"]
        ]
    }
});


monaco.editor.defineTheme('myCoolTheme', {
    base: 'vs',
    inherit: true,
    rules: [
        { token: 'custom-error', foreground: 'ff0000', fontStyle: 'bold' }
    ]
});

(然后在创建编辑器时使用主题 myCoolTheme)

javascript typescript monaco-editor
2个回答
1
投票

我最终找到了语言 .js 文件并在其中添加了自定义内容。这不是我想要的方式,但它有效。


0
投票

对于下一个尝试这样做的人,我建议使用

monaco.languages.registerDocumentSemanticTokensProvider
à la this blog post 并以这种方式向现有语言添加几个关键字。

但是,如果您确实想仅使用语法突出显示来扩展语言定义(根据文章,这比语义突出显示的计算成本要低),那么您需要从

'monaco-editor/esm/vs/basic-languages/<lang>/<lang>.js'
导入并使用
monaco.languages.setMonarchTokensProvider

通过包含“node_modules/monaco-editor/**/*”并搜索“.js”,您可以在 vscode 全局搜索中快速找到所需的文件

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.