diff --git a/crates/diagnostics/src/diagnostics.rs b/crates/diagnostics/src/diagnostics.rs index da1b661333..8820c1097d 100644 --- a/crates/diagnostics/src/diagnostics.rs +++ b/crates/diagnostics/src/diagnostics.rs @@ -46,7 +46,6 @@ struct DiagnosticGroupState { excerpts: Vec, blocks: HashMap, block_count: usize, - is_valid: bool, } enum DiagnosticBlock { @@ -207,18 +206,10 @@ impl ProjectDiagnosticsEditor { let mut groups_to_add = Vec::new(); let mut group_ixs_to_remove = Vec::new(); let mut blocks_to_add = Vec::new(); - let mut blocks_to_restyle = HashMap::default(); let mut blocks_to_remove = HashSet::default(); - let selected_excerpts = self - .editor - .read(cx) - .local_anchor_selections() - .iter() - .flat_map(|s| [s.start.excerpt_id().clone(), s.end.excerpt_id().clone()]) - .collect::>(); let mut diagnostic_blocks = Vec::new(); let excerpts_snapshot = self.excerpts.update(cx, |excerpts, excerpts_cx| { - let mut old_groups = groups.iter_mut().enumerate().peekable(); + let mut old_groups = groups.iter().enumerate().peekable(); let mut new_groups = snapshot .diagnostic_groups() .into_iter() @@ -228,7 +219,6 @@ impl ProjectDiagnosticsEditor { loop { let mut to_insert = None; let mut to_invalidate = None; - let mut to_validate = None; match (old_groups.peek(), new_groups.peek()) { (None, None) => break, (None, Some(_)) => to_insert = new_groups.next(), @@ -239,7 +229,7 @@ impl ProjectDiagnosticsEditor { match compare_diagnostics(old_primary, new_primary, &snapshot) { Ordering::Less => to_invalidate = old_groups.next(), Ordering::Equal => { - to_validate = old_groups.next(); + old_groups.next(); new_groups.next(); } Ordering::Greater => to_insert = new_groups.next(), @@ -253,7 +243,6 @@ impl ProjectDiagnosticsEditor { excerpts: Default::default(), blocks: Default::default(), block_count: 0, - is_valid: true, }; let mut pending_range: Option<(Range, usize)> = None; let mut is_first_excerpt_for_group = true; @@ -345,76 +334,9 @@ impl ProjectDiagnosticsEditor { groups_to_add.push(group_state); } else if let Some((group_ix, group_state)) = to_invalidate { - if group_state - .excerpts - .iter() - .any(|excerpt_id| selected_excerpts.contains(excerpt_id)) - { - for (block_id, block) in &group_state.blocks { - match block { - DiagnosticBlock::Header(diagnostic) => { - blocks_to_restyle.insert( - *block_id, - diagnostic_header_renderer( - buffer.clone(), - diagnostic.clone(), - false, - self.build_settings.clone(), - ), - ); - } - DiagnosticBlock::Inline(diagnostic) => { - blocks_to_restyle.insert( - *block_id, - diagnostic_block_renderer( - diagnostic.clone(), - false, - self.build_settings.clone(), - ), - ); - } - DiagnosticBlock::Context => {} - } - } - - group_state.is_valid = false; - prev_excerpt_id = group_state.excerpts.last().unwrap().clone(); - } else { - excerpts.remove_excerpts(group_state.excerpts.iter(), excerpts_cx); - group_ixs_to_remove.push(group_ix); - blocks_to_remove.extend(group_state.blocks.keys().copied()); - } - } else if let Some((_, group_state)) = to_validate { - for (block_id, block) in &group_state.blocks { - match block { - DiagnosticBlock::Header(diagnostic) => { - blocks_to_restyle.insert( - *block_id, - diagnostic_header_renderer( - buffer.clone(), - diagnostic.clone(), - true, - self.build_settings.clone(), - ), - ); - } - DiagnosticBlock::Inline(diagnostic) => { - blocks_to_restyle.insert( - *block_id, - diagnostic_block_renderer( - diagnostic.clone(), - true, - self.build_settings.clone(), - ), - ); - } - DiagnosticBlock::Context => {} - } - } - group_state.is_valid = true; - prev_excerpt_id = group_state.excerpts.last().unwrap().clone(); - } else { - unreachable!(); + excerpts.remove_excerpts(group_state.excerpts.iter(), excerpts_cx); + group_ixs_to_remove.push(group_ix); + blocks_to_remove.extend(group_state.blocks.keys().copied()); } } @@ -423,7 +345,6 @@ impl ProjectDiagnosticsEditor { self.editor.update(cx, |editor, cx| { editor.remove_blocks(blocks_to_remove, cx); - editor.replace_blocks(blocks_to_restyle, cx); let mut block_ids = editor .insert_blocks( blocks_to_add.into_iter().map(|block| { diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index f418efd8d0..ddf3fbd37f 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -3098,10 +3098,6 @@ impl Editor { .collect() } - pub fn local_anchor_selections(&self) -> &Arc<[Selection]> { - &self.selections - } - fn resolve_selections<'a, D, I>( &self, selections: I,