使用此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
函数中指定的范围信息吗?
答案 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 }
}, '');