From 496066db59f90e26c970479c0c0ddf423a241b97 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Mon, 3 Jan 2022 16:58:36 +0100 Subject: [PATCH] Run `Project::diagnose` when registering a new language on Worktree --- crates/project/src/project.rs | 5 ++++- crates/project/src/worktree.rs | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index 182e205cc2f9a3bee1ed3f674ee16044017c5b6c..f23df06eb7ed42c71f19d54f2d39b3eacac7bfb3 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -475,7 +475,10 @@ impl Project { fn add_worktree(&mut self, worktree: ModelHandle, cx: &mut ModelContext) { cx.observe(&worktree, |_, _, cx| cx.notify()).detach(); - cx.subscribe(&worktree, |_, worktree, event, cx| match event { + cx.subscribe(&worktree, |this, worktree, event, cx| match event { + worktree::Event::LanguageRegistered => { + this.diagnose(cx); + } worktree::Event::DiagnosticsUpdated(path) => { cx.emit(Event::DiagnosticsUpdated(ProjectPath { worktree_id: worktree.id(), diff --git a/crates/project/src/worktree.rs b/crates/project/src/worktree.rs index 86bdeae7061891d3af91a4d6ef6a69f3b3fc7a38..82a0755223ae8ddd0f9a8c998bf6059ea5cd654d 100644 --- a/crates/project/src/worktree.rs +++ b/crates/project/src/worktree.rs @@ -68,6 +68,7 @@ pub enum Worktree { #[derive(Debug)] pub enum Event { + LanguageRegistered, DiagnosticsUpdated(Arc), } @@ -1060,6 +1061,7 @@ impl LocalWorktree { ) -> Option> { if !self.languages.iter().any(|l| Arc::ptr_eq(l, language)) { self.languages.push(language.clone()); + cx.emit(Event::LanguageRegistered); } if let Some(server) = self.language_servers.get(language.name()) {