语言服务器协议:在编辑器启动时同步

问题描述:

我为LSP实现了客户端和服务器端。语言服务器协议:在编辑器启动时同步

我想尽可能严格遵循协议。

当我启动我的编辑器(客户端)时,它应该通知服务器本地代码库现在是什么样子(一个git sha以及自最近常见的祖先以来的一些更改),以便服务器可以当我例如正确回答时去到定义。

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

我知道我可以发送一个textDocument/didChange为每个文件有变化,自最近common-ancestor。

但是,服务器如何将其当前的git SHA发送到客户端,以及客户端如何将最近最常见的祖先发送给服务器?据我所知,这个信息是需要的,但不是Langserver协议的一部分。

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

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