使用摩纳哥,我正在尝试为我的语言实现自定义CodeActionProvider。
在下面的示例中,我可以为单个编辑器工作,但是这种方法似乎很奇怪。
已为一种语言注册了CodeActionProvider,但是必须触发的命令(至少是其ID)特定于编辑器实例。
这将在我的语言提供者和编辑器的特定实例之间建立依赖关系。
实际上,在我的场景中,我需要支持同一语言的多个编辑器实例。但是从架构的角度来看,我希望能够将我的语言提供程序与任何特定的编辑器实例分开。
对于CodeActionProvider,有什么方法可以实现这一目标吗?
来自github的示例:Quora question
var editor = monaco.editor.create(document.getElementById("container"), {
value: "{\n\t\"dependencies\": {\n\t\t\n\t}\n}\n",
language: "json"
});
var commandId = editor.addCommand(0, function() {
// services available in `ctx`
alert('my command is executing!');
}, '');
monaco.languages.registerCodeActionProvider('json', {
provideCodeActions: function(model, range, context, token) {
var command = {
id: commandId, // multiple editors will have a different commandId!
title: "Some command!"
};
return [{
command: command,
title: "Some command action!"
}];
}
});