diff options
Diffstat (limited to 'crates/ra_ide/src/folding_ranges.rs')
-rw-r--r-- | crates/ra_ide/src/folding_ranges.rs | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/crates/ra_ide/src/folding_ranges.rs b/crates/ra_ide/src/folding_ranges.rs index 315808890..0fbc9babd 100644 --- a/crates/ra_ide/src/folding_ranges.rs +++ b/crates/ra_ide/src/folding_ranges.rs | |||
@@ -58,7 +58,7 @@ pub(crate) fn folding_ranges(file: &SourceFile) -> Vec<Fold> { | |||
58 | } | 58 | } |
59 | NodeOrToken::Node(node) => { | 59 | NodeOrToken::Node(node) => { |
60 | // Fold groups of imports | 60 | // Fold groups of imports |
61 | if node.kind() == USE_ITEM && !visited_imports.contains(&node) { | 61 | if node.kind() == USE && !visited_imports.contains(&node) { |
62 | if let Some(range) = contiguous_range_for_group(&node, &mut visited_imports) { | 62 | if let Some(range) = contiguous_range_for_group(&node, &mut visited_imports) { |
63 | res.push(Fold { range, kind: FoldKind::Imports }) | 63 | res.push(Fold { range, kind: FoldKind::Imports }) |
64 | } | 64 | } |
@@ -83,17 +83,18 @@ pub(crate) fn folding_ranges(file: &SourceFile) -> Vec<Fold> { | |||
83 | fn fold_kind(kind: SyntaxKind) -> Option<FoldKind> { | 83 | fn fold_kind(kind: SyntaxKind) -> Option<FoldKind> { |
84 | match kind { | 84 | match kind { |
85 | COMMENT => Some(FoldKind::Comment), | 85 | COMMENT => Some(FoldKind::Comment), |
86 | USE_ITEM => Some(FoldKind::Imports), | 86 | USE => Some(FoldKind::Imports), |
87 | ARG_LIST | PARAM_LIST => Some(FoldKind::ArgList), | 87 | ARG_LIST | PARAM_LIST => Some(FoldKind::ArgList), |
88 | RECORD_FIELD_DEF_LIST | 88 | ASSOC_ITEM_LIST |
89 | | RECORD_FIELD_PAT_LIST | ||
90 | | RECORD_FIELD_LIST | 89 | | RECORD_FIELD_LIST |
90 | | RECORD_PAT_FIELD_LIST | ||
91 | | RECORD_EXPR_FIELD_LIST | ||
91 | | ITEM_LIST | 92 | | ITEM_LIST |
92 | | EXTERN_ITEM_LIST | 93 | | EXTERN_ITEM_LIST |
93 | | USE_TREE_LIST | 94 | | USE_TREE_LIST |
94 | | BLOCK_EXPR | 95 | | BLOCK_EXPR |
95 | | MATCH_ARM_LIST | 96 | | MATCH_ARM_LIST |
96 | | ENUM_VARIANT_LIST | 97 | | VARIANT_LIST |
97 | | TOKEN_TREE => Some(FoldKind::Block), | 98 | | TOKEN_TREE => Some(FoldKind::Block), |
98 | _ => None, | 99 | _ => None, |
99 | } | 100 | } |
@@ -337,6 +338,26 @@ fn main() <fold block>{ | |||
337 | } | 338 | } |
338 | 339 | ||
339 | #[test] | 340 | #[test] |
341 | fn test_folds_structs() { | ||
342 | check( | ||
343 | r#" | ||
344 | struct Foo <fold block>{ | ||
345 | }</fold> | ||
346 | "#, | ||
347 | ); | ||
348 | } | ||
349 | |||
350 | #[test] | ||
351 | fn test_folds_traits() { | ||
352 | check( | ||
353 | r#" | ||
354 | trait Foo <fold block>{ | ||
355 | }</fold> | ||
356 | "#, | ||
357 | ); | ||
358 | } | ||
359 | |||
360 | #[test] | ||
340 | fn test_folds_macros() { | 361 | fn test_folds_macros() { |
341 | check( | 362 | check( |
342 | r#" | 363 | r#" |