6

我有一个个人编辑器,它实现了自己的代码完成“协议”,并希望切换到语言服务器协议以减轻自己的一些开发负担。但是,我无法完全理解有关客户端实现的LSP 文档。它与服务器实现混在一起,无法找到两者之间的明显区别。

许多在线文档(包括关于 SO 的问题)都围绕着 VSCode 扩展展开,我对此一无所知并且没有帮助。

对于开始编写仅查询自动完成功能的简单客户端的任何帮助,我将不胜感激。我用 C++ 编写我的编辑器,如果有任何解释如何创建客户端的教程,我将不胜感激。我可以理解 Python、C、C#、Pure JavaScript、C++、PHP 和类似语言,因此我可以轻松地学习这些语言的任何教程。

如果有任何不清楚的地方,请告诉我,以便我解释(这是我在 LSP 的第一篇文章 :))

4

2 回答 2

3

我已经成功编写了一个从服务器接收完成结果的客户端。这是(大约)它的作用:

  • 发送一个initialize
  • 发送initialized通知
  • 寄一个textDocument/didOpen

此时,您的服务器应该已准备好响应textDocument/completion请求。根据响应,您可能还需要使用completionItem/resolve。然而,迄今为止,我从来没有在我使用过的服务器上需要它。

祝你好运!

于 2019-03-23T11:31:24.127 回答
3

玛蒂当然会引导我走向正确的方向。对我来说最困难的是理解请求/响应。LSP 有一个非常有用的页面,它的名字很不幸(恕我直言)误导了我,“检查”。事实证明这是请求/响应的一个很好的例子。

于 2019-03-24T13:15:46.850 回答