问题描述
我在使用Monaco Editor时遇到过这样的情况:
假设我的自定义语言ID为myLang
因此,正如文档描述了如何provide codeLens using registerCodeLensProvider
一样,我也想为myLang
注册codeLens。但是,现在我有多个编辑器,换句话说,就是多个模型,它们都使用myLang
的language属性进行了初始化。
只有一个编辑器的readonly
属性设置为false
,其余的都是true
。因此,我现在想做的只是向readonly
的编辑器提供codeLens(在这种情况下,将仅向一个编辑器提供codeLens,其余将提供)。
问题是,如果不同的编辑器(模型)共享相同的languageId,我该如何区分?我检查了一下文档,发现每个模型似乎都有一个唯一的id
,但是id
不是由开发人员控制的,它是只读的,您无法在初始化模型时设置或提供它。>
代码可能看起来像这样:
var editor1 = monaco.editor.create(document.getElementById("container1"),{
language: "myLang",});
var editor2 = monaco.editor.create(document.getElementById("container2"),readOnly: true
});
var editor3 = monaco.editor.create(document.getElementById("container3"),readOnly: true
});
...
// Now all editors are provided with codeLens,but i wish only editor2 and editor3 will be provided with codeLens
// but how can i distinguish them,for example,based on model.readOnly,or in other general way?
monaco.languages.registerCodeLensprovider('myLang',{
provideCodeLenses: function (model,token) {
// Is there any method to help me to distinguish model?
return {
lenses: [
{
range: {
startLineNumber: 1,startColumn: 1,endLineNumber: 2,endColumn: 1
},id: "First Line",command: {
id: commandId,title: "First Line"
}
}
],dispose: () => {}
};
},resolveCodeLens: function (model,codeLens,token) {
return codeLens;
}
});
希望我能清楚地解释我的困惑。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)