在摩纳哥编辑器中以编程方式重置标记化状态

Programmatically reset tokenization state in Monaco editor

我创建了一个 TokensProvider 来为我的自定义语言提供语法高亮显示。 这有效,但它仅在编辑文本时重绘。

问题是 - 我的自定义语言依赖于外部上下文,即使文本不变,它也会发生变化。因此,即使文本没有改变,我也需要触发语法高亮重绘。

我怎样才能做到这一点?

通过 vscode 回购挖掘,看起来像以下行:

monaco.editor.getModel(url)._resetTokenizationState()

不幸的是,这看起来像是一个未记录的 API,可能会与未来的版本冲突,所以 public API 会很好。

在 monaco 编辑器 0.33.0 版(可能是之前的版本)中,该方法已移至 TextModel 的成员对象 _tokenization 中。在那里你必须使用

monaco.editor.getModel(url)._tokenization._resetTokenizationState()