语言服务器协议:在编辑器启动时同步
问题描述:
我为LSP实现了客户端和服务器端。语言服务器协议:在编辑器启动时同步
我想尽可能严格遵循协议。
当我启动我的编辑器(客户端)时,它应该通知服务器本地代码库现在是什么样子(一个git sha以及自最近常见的祖先以来的一些更改),以便服务器可以当我例如正确回答时去到定义。
你如何在LSP中做到这一点?
我知道我可以发送一个textDocument/didChange
为每个文件有变化,自最近common-ancestor。
但是,服务器如何将其当前的git SHA发送到客户端,以及客户端如何将最近最常见的祖先发送给服务器?据我所知,这个信息是需要的,但不是Langserver协议的一部分。
答
LSP目前的设计假设LSP客户端和服务器都可以访问相同的文件系统 - 对于这种“同步”操作是不必要的。它也不会假定SCM或Git的任何内容(这是公平的,因为大部分代码不一定在Git存储库中)。
您可以向协议添加扩展以使客户端(IDE或编辑器)在启动时发送项目的“快照”,但它将成为服务器和客户端特定的集成,从而降低使用LSP的价值。