From 23b040962ff299feeef1f967bc2d5ba92b01c2bc Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 20 Dec 2018 22:13:16 +0300 Subject: fold curly blocks --- crates/ra_editor/src/folding_ranges.rs | 40 +++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 15 deletions(-) (limited to 'crates/ra_editor') diff --git a/crates/ra_editor/src/folding_ranges.rs b/crates/ra_editor/src/folding_ranges.rs index a4add8702..da542ecf0 100644 --- a/crates/ra_editor/src/folding_ranges.rs +++ b/crates/ra_editor/src/folding_ranges.rs @@ -10,6 +10,7 @@ use ra_syntax::{ pub enum FoldKind { Comment, Imports, + Block, } #[derive(Debug)] @@ -62,6 +63,8 @@ fn fold_kind(kind: SyntaxKind) -> Option { match kind { COMMENT => Some(FoldKind::Comment), USE_ITEM => Some(FoldKind::Imports), + NAMED_FIELD_DEF_LIST | FIELD_PAT_LIST | ITEM_LIST | EXTERN_ITEM_LIST | USE_TREE_LIST + | BLOCK | ENUM_VARIANT_LIST => Some(FoldKind::Block), _ => None, } } @@ -205,7 +208,7 @@ mod tests { // But this is not -fn main() { +fn main() { // We should // also // fold @@ -214,10 +217,11 @@ fn main() { //! because it has another flavor /* As does this multiline comment */ -}"#; +}"#; let fold_kinds = &[ FoldKind::Comment, + FoldKind::Block, FoldKind::Comment, FoldKind::Comment, FoldKind::Comment, @@ -228,16 +232,16 @@ fn main() { #[test] fn test_fold_imports() { let text = r#" -use std::{ +use std::{ str, vec, io as iop -}; +}; -fn main() { -}"#; +fn main() { +}"#; - let folds = &[FoldKind::Imports]; + let folds = &[FoldKind::Imports, FoldKind::Block, FoldKind::Block]; do_check(text, folds); } @@ -255,10 +259,10 @@ use std::collections::HashMap; // Some random comment use std::collections::VecDeque; -fn main() { -}"#; +fn main() { +}"#; - let folds = &[FoldKind::Imports, FoldKind::Imports]; + let folds = &[FoldKind::Imports, FoldKind::Imports, FoldKind::Block]; do_check(text, folds); } @@ -272,16 +276,22 @@ use std::io as iop; use std::mem; use std::f64; -use std::collections::{ +use std::collections::{ HashMap, VecDeque, -}; +}; // Some random comment -fn main() { -}"#; +fn main() { +}"#; - let folds = &[FoldKind::Imports, FoldKind::Imports, FoldKind::Imports]; + let folds = &[ + FoldKind::Imports, + FoldKind::Imports, + FoldKind::Imports, + FoldKind::Block, + FoldKind::Block, + ]; do_check(text, folds); } -- cgit v1.2.3