【发布时间】:2017-09-05 19:36:16
【问题描述】:
我已经实现了一个提供一些 linting 的语言服务器。 linter 检查所需的属性并发出“缺少属性”错误。我想为这些错误提供相应的“插入缺失属性”快速修复。
我认为 LSP 协议的一般领域是:
这样,服务器可以为“缺失属性”诊断标记返回“插入缺失属性”命令。
但是服务器如何实现“插入缺失属性”命令本身呢?
查看 lsp 规范,我找不到任何可以让服务器注册命令的内容。
我确实在这里找到了一些关于用于在客户端注册命令的 vscode api 的信息:https://code.visualstudio.com/docs/extensionAPI/vscode-api
所以我想我可以在客户端注册并实现“插入缺失的属性”,但是......
客户端只是将大部分工作委派给服务器的“愚蠢”包装器。因此,它并不真正了解文档结构,也不是实现需要了解该结构的文档转换的好地方。
似乎我最好的选择是向我的语言服务器添加一些“自定义”协议,以便我可以在客户端实现“插入缺失的属性”命令,但将计算编辑的困难部分委托给 quickfix到服务器。
或者...有更好的方法吗?
【问题讨论】:
标签: visual-studio-code vscode-extensions language-server-protocol