Allow to temporarily stop LSP servers (#28034)

Same as `editor::RestartLanguageServer`, now there's an
`editor::StopLanguageServer` action that stops all language servers,
related to the currently opened editor.

Opening another singleton editor with the same language or changing
selections in a multi buffer will bring the servers back up.

Release Notes:

- Added a way to temporarily stop LSP servers

---------

Co-authored-by: Michael Sloan <mgsloan@gmail.com>
This commit is contained in:
Kirill Bulatov 2025-04-03 12:50:43 -06:00 committed by GitHub
parent b9724d9cbe
commit 0c82541f0a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 114 additions and 28 deletions

View file

@ -367,7 +367,9 @@ message Envelope {
LanguageServerIdForNameResponse language_server_id_for_name_response = 333; // current max
LoadCommitDiff load_commit_diff = 334;
LoadCommitDiffResponse load_commit_diff_response = 335; // current max
LoadCommitDiffResponse load_commit_diff_response = 335;
StopLanguageServers stop_language_servers = 336; // current max
}
reserved 87 to 88;
@ -2445,6 +2447,11 @@ message RestartLanguageServers {
repeated uint64 buffer_ids = 2;
}
message StopLanguageServers {
uint64 project_id = 1;
repeated uint64 buffer_ids = 2;
}
message MultiLspQueryResponse {
repeated LspResponse responses = 1;
}

View file

@ -400,6 +400,7 @@ messages!(
(RespondToChannelInvite, Foreground),
(RespondToContactRequest, Foreground),
(RestartLanguageServers, Foreground),
(StopLanguageServers, Background),
(RoomUpdated, Foreground),
(SaveBuffer, Foreground),
(SendChannelMessage, Background),
@ -593,6 +594,7 @@ request_messages!(
(RejoinRemoteProjects, RejoinRemoteProjectsResponse),
(MultiLspQuery, MultiLspQueryResponse),
(RestartLanguageServers, Ack),
(StopLanguageServers, Ack),
(OpenContext, OpenContextResponse),
(CreateContext, CreateContextResponse),
(SynchronizeContexts, SynchronizeContextsResponse),
@ -674,6 +676,7 @@ entity_messages!(
LoadCommitDiff,
MultiLspQuery,
RestartLanguageServers,
StopLanguageServers,
OnTypeFormatting,
OpenNewBuffer,
OpenBufferById,