diff --git a/crates/ide/src/folding_ranges.rs b/crates/ide/src/folding_ranges.rs index 8f3144de08b2..8b8a2cc38930 100644 --- a/crates/ide/src/folding_ranges.rs +++ b/crates/ide/src/folding_ranges.rs @@ -33,6 +33,7 @@ pub(crate) fn folding_ranges(file: &SourceFile) -> Vec { let mut visited_imports = FxHashSet::default(); let mut visited_mods = FxHashSet::default(); let mut visited_consts = FxHashSet::default(); + let mut visited_statics = FxHashSet::default(); // regions can be nested, here is a LIFO buffer let mut regions_starts: Vec = vec![]; @@ -101,6 +102,12 @@ pub(crate) fn folding_ranges(file: &SourceFile) -> Vec { res.push(Fold { range, kind: FoldKind::Consts }) } } + // Fold groups of consts + if node.kind() == STATIC && !visited_statics.contains(&node) { + if let Some(range) = contiguous_range_for_group(&node, &mut visited_statics) { + res.push(Fold { range, kind: FoldKind::Statics }) + } + } } } }