我正在像这样向摩纳哥添加自定义语言:
monaco.languages.register({ id: 'someLanguage' });
monaco.languages.registerCompletionItemProvider('someLanguage', {
provideCompletionItems: function () {...}
}
我在开发环境中执行此操作,该环境会根据更改进行热重新加载,因此正在使用热重新加载。每次保存内容时,都会再次运行相同的代码。导致上面的代码被多次调用,因此monaco一次又一次注册相同的功能。在此完成提供程序的示例中,在热重新加载脚本后添加新的提供程序时,将保留所有以前的提供程序。
我们有什么方法可以取消注册语言以再次注册?
谢谢
registerCompletionItemProvider
返回具有dispose
功能的对象。只需调用它即可取消注册您的听众。
const { dispose } = registerCompletionItemProvider( ... )
dispose();