编写LSP客户端的指南

时间:2019-03-23 10:43:58

标签: language-server-protocol

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

许多在线文档(包括有关SO的问题)都是围绕VSCode扩展展开的,我对它们的了解为零,并且没有帮助。

我很乐意为您提供帮助,帮助您开始编写仅查询自动完成功能的简单客户端。我用C ++写我的编辑器,不胜感激任何解释如何创建客户端的教程。我能理解Python,C,C#,Pure JavaScript,C ++,PHP和类似语言,因此我可以轻松按照这些语言进行任何教程。

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

2 个答案:

答案 0 :(得分:1)

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

  • 发送initialize
  • 发送textDocument/didOpen

这时,您的服务器应该已经准备好回答textDocument/completion请求。根据响应,您可能还需要使用completionItem/resolve。到目前为止,对于我所使用的服务器,我从不需要它。

祝你好运!

答案 1 :(得分:0)

Mattie当然会带我朝正确的方向前进。对我而言,最困难的是理解请求/响应。 LSP上有一个very helpful page,带有一个不幸的名字(IMHO),它误导了我“检查”。事实证明,这是一个很好的请求/响应示例。

相关问题