diff --git a/src/rules/let_in.rs b/src/rules/let_in.rs index 99da381..9961a3c 100644 --- a/src/rules/let_in.rs +++ b/src/rules/let_in.rs @@ -6,8 +6,20 @@ pub fn rule( let mut children = crate::children::Children::new(build_ctx, node); + let items_count = node + .children() + .filter(|element| match element.kind() { + rnix::SyntaxKind::NODE_KEY_VALUE + | rnix::SyntaxKind::NODE_INHERIT + | rnix::SyntaxKind::NODE_INHERIT_FROM => true, + _ => false, + }) + .count(); + let layout = if children.has_comments() { &crate::config::Layout::Tall + } else if items_count > 1 { + &crate::config::Layout::Tall } else { build_ctx.config.layout() }; diff --git a/tests/cases/let_in/in b/tests/cases/let_in/in index b877889..c08f7f9 100644 --- a/tests/cases/let_in/in +++ b/tests/cases/let_in/in @@ -1,4 +1,6 @@ let + /**/ + a = let b=2; c=3; in d; /**/ a = let c=1; in f; /**/ diff --git a/tests/cases/let_in/out b/tests/cases/let_in/out index 02b390c..f0752a2 100644 --- a/tests/cases/let_in/out +++ b/tests/cases/let_in/out @@ -1,5 +1,12 @@ let /**/ + a = + let + b = 2; + c = 3; + in + d; + /**/ a = let c = 1; in f; /**/ a =