单击获取Monaco Editor CodeLens信息

时间:2018-05-05 10:40:30

标签: monaco-editor

使用此CodeLens provider example作为起点,我一直试图弄清楚如何在点击链接时获取与CodeLens相关的范围信息。

var commandId = editor.addCommand(0, function() {
    // services available in `ctx`
    alert('my command is executing!');

}, '');

monaco.languages.registerCodeLensProvider('json', {
    provideCodeLenses: function(model, token) {
        return [
            {
                range: {
                    startLineNumber: 1,
                    startColumn: 1,
                    endLineNumber: 2,
                    endColumn: 1
                },
                id: "First Line",
                command: {
                    id: commandId,
                    title: "First Line"
                }
            }
        ];
    },
    resolveCodeLens: function(model, codeLens, token) {
        return codeLens;
    }
});

我不确定ctx评论所指的是什么。我已经尝试将此作为参数添加到addCommand中的匿名函数参数中,但我没有得到任何东西。甚至可以获得provideCodeLenses函数中指定的范围信息吗?

1 个答案:

答案 0 :(得分:0)

要解决此问题,我在arguments中向返回对象的command属性添加了provideCodeLenses属性:

provideCodeLenses: function(model, token) {
    return [
        {
            range: {
                startLineNumber: 1,
                startColumn: 1,
                endLineNumber: 2,
                endColumn: 1
            },
            id: "First Line",
            command: {
                id: commandId,
                title: "First Line",
                arguments: { from: 1, to: 2 },
            }
        }
    ];
}

然后可以在addCommand匿名函数中访问它:

var commandId = editor.addCommand(0, function(ctx, args) {
    console.log(args); // { from: 1, to: 2 }
}, '');