Display language server name in status bar

This commit is contained in:
Antonio Scandurra 2022-03-10 16:45:13 +01:00
parent 4243f0c339
commit 45fb470f4d
7 changed files with 228 additions and 86 deletions

View file

@ -83,8 +83,9 @@ impl Server {
.add_request_handler(Server::register_worktree)
.add_message_handler(Server::unregister_worktree)
.add_request_handler(Server::update_worktree)
.add_message_handler(Server::start_language_server)
.add_message_handler(Server::update_language_server)
.add_message_handler(Server::update_diagnostic_summary)
.add_message_handler(Server::lsp_event)
.add_request_handler(Server::forward_project_request::<proto::GetDefinition>)
.add_request_handler(Server::forward_project_request::<proto::GetReferences>)
.add_request_handler(Server::forward_project_request::<proto::SearchProject>)
@ -385,6 +386,7 @@ impl Server {
worktrees,
replica_id: joined.replica_id as u32,
collaborators,
language_servers: joined.project.language_servers.clone(),
};
let connection_ids = joined.project.connection_ids();
let contact_user_ids = joined.project.authorized_user_ids();
@ -534,9 +536,29 @@ impl Server {
Ok(())
}
async fn lsp_event(
async fn start_language_server(
mut self: Arc<Server>,
request: TypedEnvelope<proto::StartLanguageServer>,
) -> tide::Result<()> {
let receiver_ids = self.state_mut().start_language_server(
request.payload.project_id,
request.sender_id,
request
.payload
.server
.clone()
.ok_or_else(|| anyhow!("invalid language server"))?,
)?;
broadcast(request.sender_id, receiver_ids, |connection_id| {
self.peer
.forward_send(request.sender_id, connection_id, request.payload.clone())
})?;
Ok(())
}
async fn update_language_server(
self: Arc<Server>,
request: TypedEnvelope<proto::LspEvent>,
request: TypedEnvelope<proto::UpdateLanguageServer>,
) -> tide::Result<()> {
let receiver_ids = self
.state()