diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index 66e5b4df9d035e85114d177ba0456fba9d2f3d10..cc02740900770e4bee42ad49361f65b7dda98568 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -1883,8 +1883,14 @@ impl Editor { project::Event::RefreshInlayHints => { editor.refresh_inlay_hints(InlayHintRefreshReason::RefreshRequested, cx); } - project::Event::LanguageServerAdded(..) - | project::Event::LanguageServerRemoved(..) => { + project::Event::LanguageServerRemoved(..) => { + if editor.tasks_update_task.is_none() { + editor.tasks_update_task = Some(editor.refresh_runnables(window, cx)); + } + editor.registered_buffers.clear(); + editor.register_visible_buffers(cx); + } + project::Event::LanguageServerAdded(..) => { if editor.tasks_update_task.is_none() { editor.tasks_update_task = Some(editor.refresh_runnables(window, cx)); } @@ -22102,8 +22108,7 @@ impl Editor { } fn register_visible_buffers(&mut self, cx: &mut Context) { - // Singletons are registered on editor creation. - if self.ignore_lsp_data() || self.buffer().read(cx).is_singleton() { + if self.ignore_lsp_data() { return; } for (_, (visible_buffer, _, _)) in self.visible_excerpts(None, cx) {