通过 LSP 扩展中的 CodeLens 请求发送参数

问题描述 投票:0回答:1

我目前正在使用 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
函数上读取它们?

typescript visual-studio-code plugins vscode-extensions
1个回答
0
投票

我知道这已经晚了,但它可能对某人有用。

您在错误的地方通过了

arguments
。您需要将它们作为命令对象中的属性传递,而不是在代码镜头本身中传递。

现在在代码镜头中传递的命令应该如下所示

{
    "command": "extensionName.commandName",
     "title": "Run Test",
     "category": "CodeLens Sample",
     "arguments": [1]
}
© www.soinside.com 2019 - 2024. All rights reserved.