diff --git a/crates/diagnostics/src/diagnostics.rs b/crates/diagnostics/src/diagnostics.rs index 9f02033237ea256f73812db9d9ef783abce96428..d86676729e682ee8e992933103a388ef2f5a1e4d 100644 --- a/crates/diagnostics/src/diagnostics.rs +++ b/crates/diagnostics/src/diagnostics.rs @@ -138,27 +138,16 @@ impl ProjectDiagnosticsEditor { language_server_id, path, } => { - let max_severity = this.max_severity(); - let has_diagnostics_to_display = project.read(cx).lsp_store().read(cx).diagnostics_for_buffer(path) - .into_iter().flatten() - .filter(|(server_id, _)| language_server_id == server_id) - .flat_map(|(_, diagnostics)| diagnostics) - .any(|diagnostic| diagnostic.diagnostic.severity <= max_severity); - - if has_diagnostics_to_display { - this.paths_to_update - .insert((path.clone(), Some(*language_server_id))); - this.summary = project.read(cx).diagnostic_summary(false, cx); - cx.emit(EditorEvent::TitleChanged); - - if this.editor.focus_handle(cx).contains_focused(cx) || this.focus_handle.contains_focused(cx) { - log::debug!("diagnostics updated for server {language_server_id}, path {path:?}. recording change"); - } else { - log::debug!("diagnostics updated for server {language_server_id}, path {path:?}. updating excerpts"); - this.update_stale_excerpts(cx); - } + this.paths_to_update + .insert((path.clone(), Some(*language_server_id))); + this.summary = project.read(cx).diagnostic_summary(false, cx); + cx.emit(EditorEvent::TitleChanged); + + if this.editor.focus_handle(cx).contains_focused(cx) || this.focus_handle.contains_focused(cx) { + log::debug!("diagnostics updated for server {language_server_id}, path {path:?}. recording change"); } else { - log::debug!("diagnostics updated for server {language_server_id}, path {path:?}. no diagnostics to display"); + log::debug!("diagnostics updated for server {language_server_id}, path {path:?}. updating excerpts"); + this.update_stale_excerpts(cx); } } _ => {} @@ -363,12 +352,16 @@ impl ProjectDiagnosticsEditor { ExcerptId::min() }; - let max_severity = self.max_severity(); let path_state = &mut self.path_states[path_ix]; let mut new_group_ixs = Vec::new(); let mut blocks_to_add = Vec::new(); let mut blocks_to_remove = HashSet::default(); let mut first_excerpt_id = None; + let max_severity = if self.include_warnings { + DiagnosticSeverity::WARNING + } else { + DiagnosticSeverity::ERROR + }; let excerpts_snapshot = self.excerpts.update(cx, |excerpts, cx| { let mut old_groups = mem::take(&mut path_state.diagnostic_groups) .into_iter() @@ -657,14 +650,6 @@ impl ProjectDiagnosticsEditor { prev_path = Some(path); } } - - fn max_severity(&self) -> DiagnosticSeverity { - if self.include_warnings { - DiagnosticSeverity::WARNING - } else { - DiagnosticSeverity::ERROR - } - } } impl FocusableView for ProjectDiagnosticsEditor { diff --git a/crates/project/src/lsp_store.rs b/crates/project/src/lsp_store.rs index 6a9acd3048056b94c0a77f4bc60947ca5bd985cc..f719b9194233459b53ac23053bc4b4454a43048f 100644 --- a/crates/project/src/lsp_store.rs +++ b/crates/project/src/lsp_store.rs @@ -2950,21 +2950,6 @@ impl LspStore { }) } - pub fn diagnostics_for_buffer( - &self, - path: &ProjectPath, - ) -> Option< - &[( - LanguageServerId, - Vec>>, - )], - > { - self.diagnostics - .get(&path.worktree_id)? - .get(&path.path) - .map(|diagnostics| diagnostics.as_slice()) - } - pub fn started_language_servers(&self) -> Vec<(WorktreeId, LanguageServerName)> { self.language_server_ids.keys().cloned().collect() }