摩纳哥 - 注销语言功能

Monaco - unregister language feature

我正在像这样向摩纳哥添加自定义语言:

 monaco.languages.register({ id: 'someLanguage' });
 monaco.languages.registerCompletionItemProvider('someLanguage', { 
   provideCompletionItems: function () {...}
 }

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

我们是否有任何方法可以取消注册一种语言以便重新注册它?

谢谢

registerCompletionItemProvider returns 具有 dispose 功能的对象。 只需调用它即可注销您的侦听器。

const { dispose } = registerCompletionItemProvider( ... )

dispose();