如何在Monaco Editor中区分具有相同languageId的不同模型?

问题描述

我在使用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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...