0

我正在为 LSP 实现客户端和服务器端。

我想尽可能严格地遵守协议。

当我启动我的编辑器(客户端)时,它应该通知服务器本地代码库现在的样子(一个 git sha 加上自 most-recent-common-ancestor 以来的一些更改),以便服务器可以在我正确回答例如,去定义。

你如何在 LSP 中做到这一点?

textDocument/didChange我知道我可以为自最近共同祖先以来发生变化的每个文档发送一个。

但是服务器如何将其当前的 git SHA 发送给客户端,客户端又如何将最新的公共祖先发送给服务器呢?据我所知,需要此信息,但不是 Langserver 协议的一部分。

4

1 回答 1

1

LSP 目前的设计假设是 LSP 客户端和服务器都可以访问相同的文件系统——对于这种“同步”操作来说,这种“同步”操作是不必要的。它也不假设任何关于 SCM 或 Git 的内容(这是公平的,因为大多数编写的代码不一定在 Git 存储库中)。

您可以向协议添加扩展,让客户端(IDE 或编辑器)在启动时发送项目的“快照”,但它会成为服务器和客户端特定的集成,从而降低使用 LSP 的价值。

于 2017-08-12T08:27:54.287 回答