2017-08-09 86 views
0

我爲LSP實現了客戶端和服務器端。語言服務器協議:在編輯器啓動時同步

我想盡可能嚴格遵循協議。

當我啓動我的編輯器(客戶端)時,它應該通知服務器本地代碼庫現在是什麼樣子(一個git sha以及自最近常見的祖先以來的一些更改),以便服務器可以當我例如正確回答時去到定義。

你如何在LSP中做到這一點?

我知道我可以發送一個textDocument/didChange爲每個文件有變化,自最近common-ancestor。

但是,服務器如何將其當前的git SHA發送到客戶端,以及客戶端如何將最近最常見的祖先發送給服務器?據我所知,這個信息是需要的,但不是Langserver協議的一部分。

回答

1

LSP目前的設計假設LSP客戶端和服務器都可以訪問相同的文件系統 - 對於這種「同步」操作是不必要的。它也不會假定SCM或Git的任何內容(這是公平的,因爲大部分代碼不一定在Git存儲庫中)。

您可以向協議添加擴展以使客戶端(IDE或編輯器)在啓動時發送項目的「快照」,但它將成爲服務器和客戶端特定的集成,從而降低使用LSP的價值。