LSP 客户端编写指南
Guidance to writing LSP Client
我有一个个人编辑器,它实现了自己的 "protocol" 代码完成功能,我想切换到语言服务器协议以减轻一些开发负担。但是,我无法完全理解有关客户端实现的 LSP Documentation。它与服务器实现混在一起,找不到两者之间的明显区别。
很多在线文档(包括关于 SO 的问题)都围绕着 VSCode 扩展,我对这些扩展知之甚少而且没有帮助。
如果能帮助我开始编写一个只查询自动完成的简单客户端,我将不胜感激。我用 C++ 编写我的编辑器,如果有任何解释如何创建客户端的教程,我将不胜感激。我可以理解 Python、C、C#、Pure JavaScript、C++、PHP 和类似的语言,因此我可以轻松地学习这些语言的任何教程。
如果有任何不清楚的地方,请告诉我,以便我解释(这是我在 LSP 中的第一个 post :))
我已经成功编写了一个从服务器接收完成结果的客户端。这是(大约)它的作用:
- 发送
initialize
- 发送
initialized
通知
- 发一个
textDocument/didOpen
此时,您的服务器应该已准备好响应 textDocument/completion
请求。根据响应,您可能还需要使用 completionItem/resolve
。然而,到目前为止,我从来不需要为我使用的服务器使用它。
祝你好运!
当然是 Mattie 引导我走向正确的方向。对我来说最困难的是理解 request/response。 LSP 有一个 very helpful page,名字很不幸(恕我直言)误导了我,"inspection"。事实证明这是 request/response.
上的一个很好的例子
我有一个个人编辑器,它实现了自己的 "protocol" 代码完成功能,我想切换到语言服务器协议以减轻一些开发负担。但是,我无法完全理解有关客户端实现的 LSP Documentation。它与服务器实现混在一起,找不到两者之间的明显区别。
很多在线文档(包括关于 SO 的问题)都围绕着 VSCode 扩展,我对这些扩展知之甚少而且没有帮助。
如果能帮助我开始编写一个只查询自动完成的简单客户端,我将不胜感激。我用 C++ 编写我的编辑器,如果有任何解释如何创建客户端的教程,我将不胜感激。我可以理解 Python、C、C#、Pure JavaScript、C++、PHP 和类似的语言,因此我可以轻松地学习这些语言的任何教程。
如果有任何不清楚的地方,请告诉我,以便我解释(这是我在 LSP 中的第一个 post :))
我已经成功编写了一个从服务器接收完成结果的客户端。这是(大约)它的作用:
- 发送
initialize
- 发送
initialized
通知 - 发一个
textDocument/didOpen
此时,您的服务器应该已准备好响应 textDocument/completion
请求。根据响应,您可能还需要使用 completionItem/resolve
。然而,到目前为止,我从来不需要为我使用的服务器使用它。
祝你好运!
当然是 Mattie 引导我走向正确的方向。对我来说最困难的是理解 request/response。 LSP 有一个 very helpful page,名字很不幸(恕我直言)误导了我,"inspection"。事实证明这是 request/response.
上的一个很好的例子