@@ -282,6 +282,8 @@ impl MethodCall {
282pub enum Notification {
282pub enum Notification {
283 // we inject this notification to signal the LSP is ready
283 // we inject this notification to signal the LSP is ready
284 Initialized,
284 Initialized,
285+ // and this notification to signal that the LSP exited
285 PublishDiagnostics(lsp::PublishDiagnosticsParams),
287 PublishDiagnostics(lsp::PublishDiagnosticsParams),
286 ShowMessage(lsp::ShowMessageParams),
288 ShowMessage(lsp::ShowMessageParams),
287 LogMessage(lsp::LogMessageParams),
289 LogMessage(lsp::LogMessageParams),
@@ -294,6 +296,7 @@ impl Notification {
295 let notification = match method {
297 let notification = match method {
296 lsp::notification::Initialized::METHOD => Self::Initialized,
298 lsp::notification::Initialized::METHOD => Self::Initialized,
299+ lsp::notification::Exit::METHOD => Self::Exit,
297 lsp::notification::PublishDiagnostics::METHOD => {
300 lsp::notification::PublishDiagnostics::METHOD => {
298 let params: lsp::PublishDiagnosticsParams = params.parse()?;
301 let params: lsp::PublishDiagnosticsParams = params.parse()?;
299 Self::PublishDiagnostics(params)
302 Self::PublishDiagnostics(params)
@@ -350,6 +353,10 @@ impl Registry {
350 .map(|(_, client)| client.as_ref())
353 .map(|(_, client)| client.as_ref())
356+ pub fn remove_by_id(&mut self, id: usize) {
357+ self.inner.retain(|_, (client_id, _)| client_id != &id)
353 pub fn restart(
360 pub fn restart(
354 &mut self,
361 &mut self,
355 language_config: &LanguageConfiguration,
362 language_config: &LanguageConfiguration,