是否可以通过CodeAction请求执行自定义操作?

时间:2019-08-14 13:23:01

标签: visual-studio-code vscode-extensions language-server-protocol

我想从Visual Studio代码启动用户操作。它将读取当前打开的文本文档,通过某种UI操作(自定义按钮,或者如果可能,通过CodeAction)提取一段代码,使用Language Server Protocol将其发送到服务器,执行一些工作并返回一些输出回到客户。

我已经阅读了CodeAction的语言服务器协议规范,但通常仅用于快速修复和重构,我可以将其用于任何其他自定义操作吗?如果可以,怎么办?

1 个答案:

答案 0 :(得分:0)

Code actions可以在执行时调用任意客户端命令:

export interface CodeAction {
    [...]

    /**
     * A command this code action executes. If a code action
     * provides an edit and a command, first the edit is
     * executed and then the command.
     */
    command?: Command;
}

您可以使用vscode.commands名称空间注册新命令。

  

[...]使用语言服务器协议将其发送到服务器,进行一些工作并将一些输出返回给客户端

对于这一部分,您可以使用自定义方法在语言服务器和VSCode扩展之间来回发送数据:


这两者当然会使您的语言服务器与VSCode以外的客户端的兼容性大大降低。您确定为此需要客户端逻辑吗?

相关问题