摩纳哥 - 取消注册语言功能

Sou*_*zal 3 monaco-editor

我正在向摩纳哥添加自定义语言,如下所示:

monaco.languages.register({ id: 'someLanguage' });
monaco.languages.registerCompletionItemProvider('someLanguage', { 
    provideCompletionItems: function () { /* ... */ }
});
Run Code Online (Sandbox Code Playgroud)

我在开发环境中执行此操作,该环境会在更改时热重新加载,因此它使用热重新加载。每次保存内容时都会再次运行相同的代码。导致上面的代码被多次调用,从而monaco一次又一次地注册相同的函数。在这个完成提供程序的示例中,当在脚本热重新加载后添加新的提供程序时,我以前的所有提供程序都会被保留。

我们有没有办法取消注册一种语言以便再次注册它?

谢谢

Nic*_*ick 11

registerCompletionItemProvider返回一个带有函数的对象dispose。只需调用它即可取消注册您的侦听器。

const { dispose } = registerCompletionItemProvider( ... )

dispose();
Run Code Online (Sandbox Code Playgroud)