0

每次识别令牌时,我都想运行一个函数。我已经看过文档,以下函数似乎是我想做的入口点:setMonarchTokensProvider。

这里我们提供了一个示例:

monaco.languages.setMonarchTokensProvider('mySpecialLanguage', {
tokenizer: {
    root: [
        [/\[error.*/, "custom-error"],
        [/\[notice.*/, "custom-notice"],
        [/\[info.*/, "custom-info"],
        [/\[[a-zA-Z 0-9:]+\]/, "custom-date"],
    ]
}});

monaco.editor.defineTheme('myCoolTheme', {
base: 'vs',
inherit: false,
rules: [
    { token: 'custom-info', foreground: '808080' },
    { token: 'custom-error', foreground: 'ff0000', fontStyle: 'bold' },
    { token: 'custom-notice', foreground: 'FFA500' },
    { token: 'custom-date', foreground: '008800' },
]});

我试图设置一个警报(“某事”)而不是“自定义错误”,但它只运行一次,而不是每次出现的令牌。提供的代码示例运行良好:它为每个标记着色,满足正则表达式。

我已经看过文档,似乎我应该使用 IMonarchLanguageRule 等 IMonarchLanguageAction 但我仍然不清楚如何使用它。

我相信一个例子可以解决这个问题。非常感谢。

4

1 回答 1

0

IMonarchLanguage 和 IMonarchLanguageRule 似乎都没有解决这个问题。这就是为什么我将使用个人解决方案而不使用 Monaco-editor 匹配器。这意味着我将实现 Monaco-editor 已经在做的工作的两倍,但我找不到使用 Monaco 的解决方案。

我将通过正则表达式检查与命令匹配的内容,如果是,我将执行我想要的操作。这将动态完成,因此如果用户键入命令,我将检查每个字符的正则表达式,直到满足为止。

于 2018-08-08T12:32:40.757 回答