我目前正在使用 Microsoft 提供的 LSP 进行扩展,并遇到了以下问题。
我使用
connection.OnCodeLens()
函数创建了一个 CodeLenses 数组,其中填充了如下所示的对象:
codeLenses.push({
range: {
start: { line: i, character: 0 },
end: { line: i, character: 8 }
},
command,
data: 0,
arguments: i
});
此外,以下是在 package.json 文件中创建命令的方式
{
"command": "extensionName.commandName",
"title": "Run Test",
"category": "CodeLens Sample",
"arguments": []
}
该命令是在推送到
codeLenses
数组之前创建的,标题为“运行测试”。当我在客户端扩展上按“运行测试”时,函数 connection.onExecuteCommand(handler)
被调用,但处理程序没有附加任何参数(即它有一个长度为 0 的数组)。
我想知道单击“运行测试”命令的行。如何通过 codeLens 发送参数,以便我可以在
executeCommand
函数上读取它们?
我知道这已经晚了,但它可能对某人有用。
您在错误的地方通过了
arguments
。您需要将它们作为命令对象中的属性传递,而不是在代码镜头本身中传递。
现在在代码镜头中传递的命令应该如下所示
{
"command": "extensionName.commandName",
"title": "Run Test",
"category": "CodeLens Sample",
"arguments": [1]
}