diff --git a/README.md b/README.md index f2d8523..568ab10 100644 --- a/README.md +++ b/README.md @@ -73,9 +73,11 @@ Beauty is subjective, right? - We optimize for the wisdom of the crowd, + We started from the wisdom of the crowd, which comes in big part from the 2.3 million lines of code of [Nixpkgs](https://github.com/NixOS/nixpkgs). + Then we applied the feedback of developers + who have used [Nix](https://nixos.org) on a day to day basis for several years. - ✔️ **Transparent** diff --git a/src/rules/pattern.rs b/src/rules/pattern.rs index 16b8a69..435191c 100644 --- a/src/rules/pattern.rs +++ b/src/rules/pattern.rs @@ -69,6 +69,7 @@ pub fn rule( // { let child = children.get_next().unwrap(); steps.push_back(crate::builder::Step::Format(child.element)); + steps.push_back(crate::builder::Step::Indent); let mut last_kind = rnix::SyntaxKind::TOKEN_CURLY_B_OPEN; @@ -78,17 +79,11 @@ pub fn rule( // /**/ rnix::SyntaxKind::TOKEN_COMMENT => { if let rnix::SyntaxKind::TOKEN_COMMA - | rnix::SyntaxKind::TOKEN_CURLY_B_OPEN = last_kind - { - steps.push_back(crate::builder::Step::Whitespace); - steps.push_back(crate::builder::Step::Indent); - } - - if let rnix::SyntaxKind::TOKEN_COMMENT + | rnix::SyntaxKind::TOKEN_COMMENT + | rnix::SyntaxKind::TOKEN_CURLY_B_OPEN | rnix::SyntaxKind::TOKEN_ELLIPSIS | rnix::SyntaxKind::NODE_PAT_ENTRY = last_kind { - steps.push_back(crate::builder::Step::Indent); steps.push_back(crate::builder::Step::NewLine); steps.push_back(crate::builder::Step::Pad); } @@ -97,34 +92,25 @@ pub fn rule( steps.push_back(crate::builder::Step::Comment(text)); }); - if let rnix::SyntaxKind::TOKEN_COMMA - | rnix::SyntaxKind::TOKEN_CURLY_B_OPEN - | rnix::SyntaxKind::TOKEN_COMMENT - | rnix::SyntaxKind::TOKEN_ELLIPSIS - | rnix::SyntaxKind::TOKEN_WHITESPACE - | rnix::SyntaxKind::NODE_PAT_ENTRY = last_kind - { - steps.push_back(crate::builder::Step::Dedent); - } - last_kind = kind; } // item rnix::SyntaxKind::TOKEN_ELLIPSIS | rnix::SyntaxKind::NODE_PAT_ENTRY => { - if let rnix::SyntaxKind::TOKEN_COMMA - | rnix::SyntaxKind::TOKEN_CURLY_B_OPEN = last_kind - { - steps.push_back(crate::builder::Step::Whitespace); + if let rnix::SyntaxKind::TOKEN_CURLY_B_OPEN = last_kind { + if items_count > 1 { + steps.push_back(crate::builder::Step::NewLine); + steps.push_back(crate::builder::Step::Pad); + } else { + steps.push_back(crate::builder::Step::Whitespace); + } } - if let rnix::SyntaxKind::TOKEN_COMMENT - | rnix::SyntaxKind::TOKEN_WHITESPACE = last_kind + if let rnix::SyntaxKind::TOKEN_COMMA + | rnix::SyntaxKind::TOKEN_COMMENT = last_kind { steps.push_back(crate::builder::Step::NewLine); steps.push_back(crate::builder::Step::Pad); - steps.push_back(crate::builder::Step::Whitespace); - steps.push_back(crate::builder::Step::Whitespace); } match layout { @@ -144,13 +130,12 @@ pub fn rule( } // , rnix::SyntaxKind::TOKEN_COMMA => { - match layout { - crate::config::Layout::Tall => { - steps.push_back(crate::builder::Step::NewLine); - steps.push_back(crate::builder::Step::Pad); - } - crate::config::Layout::Wide => {} - }; + if let rnix::SyntaxKind::TOKEN_COMMA + | rnix::SyntaxKind::TOKEN_COMMENT = last_kind + { + steps.push_back(crate::builder::Step::NewLine); + steps.push_back(crate::builder::Step::Pad); + } steps.push_back(crate::builder::Step::Format(child.element)); children.move_next(); last_kind = kind; @@ -167,9 +152,16 @@ pub fn rule( // } let child = children.get_next().unwrap(); + steps.push_back(crate::builder::Step::Dedent); if !has_comments_between_curly_b && items_count <= 1 { steps.push_back(crate::builder::Step::Whitespace); } else { + if let rnix::SyntaxKind::NODE_PAT_ENTRY = last_kind { + steps.push_back(crate::builder::Step::Token( + rnix::SyntaxKind::TOKEN_COMMA, + ",".to_string(), + )) + } steps.push_back(crate::builder::Step::NewLine); steps.push_back(crate::builder::Step::Pad); } diff --git a/tests/cases/idioms/out b/tests/cases/idioms/out index 187a55c..de4a4bf 100644 --- a/tests/cases/idioms/out +++ b/tests/cases/idioms/out @@ -6,10 +6,11 @@ c = 3; }; } - { stdenv - , lib - , fetchFrom - , ... + { + stdenv, + lib, + fetchFrom, + ... }: stdenv.mkDerivation rec { pname = "test"; diff --git a/tests/cases/key_value/out b/tests/cases/key_value/out index e844a22..f6b348a 100644 --- a/tests/cases/key_value/out +++ b/tests/cases/key_value/out @@ -96,8 +96,9 @@ rec }; n = pkgs: { }; o = - { pkgs - , ... + { + pkgs, + ... }: { }; diff --git a/tests/cases/lambda/out b/tests/cases/lambda/out index 992b95e..02bb310 100644 --- a/tests/cases/lambda/out +++ b/tests/cases/lambda/out @@ -56,8 +56,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ) ( - { pkgs ? import ./.. { } - , locationsXml + { + pkgs ? import ./.. { }, + locationsXml, }: null ) diff --git a/tests/cases/pattern/out b/tests/cases/pattern/out index 5a58a6f..7c9200a 100644 --- a/tests/cases/pattern/out +++ b/tests/cases/pattern/out @@ -1,9 +1,9 @@ [ ( - { self - , gomod2nix - , mach-nix - , + { + self, + gomod2nix, + mach-nix, } @ inp: _ @@ -11,7 +11,8 @@ ({ }: _) ({ a }: _) ( - { /**/ + { + /**/ }: _ ) @@ -23,13 +24,15 @@ _ ) ( - { /**/ + { + /**/ ... }: _ ) ( - { /**/ + { + /**/ ... /**/ }: @@ -37,16 +40,18 @@ ) ( - { b - , e - , ... + { + b, + e, + ... }: _ ) ( - { b - , e - , ... + { + b, + e, + ... /* h */ @@ -54,9 +59,10 @@ _ ) ( - { b - , e - , /* + { + b, + e, + /* g */ ... @@ -64,9 +70,10 @@ _ ) ( - { b - , e - , /* + { + b, + e, + /* g */ ... @@ -77,22 +84,26 @@ _ ) ( - { b - , e + { + b, + e /* f */ - , ... + , + ... }: _ ) ( - { b - , e + { + b, + e /* f */ - , ... + , + ... /* h */ @@ -100,12 +111,14 @@ _ ) ( - { b - , e + { + b, + e /* f */ - , /* + , + /* g */ ... @@ -113,12 +126,14 @@ _ ) ( - { b - , e + { + b, + e /* f */ - , /* + , + /* g */ ... @@ -129,22 +144,24 @@ _ ) ( - { b - , /* + { + b, + /* d */ - e - , ... + e, + ... }: _ ) ( - { b - , /* + { + b, + /* d */ - e - , ... + e, + ... /* h */ @@ -152,12 +169,13 @@ _ ) ( - { b - , /* + { + b, + /* d */ - e - , /* + e, + /* g */ ... @@ -165,12 +183,13 @@ _ ) ( - { b - , /* + { + b, + /* d */ - e - , /* + e, + /* g */ ... @@ -181,28 +200,32 @@ _ ) ( - { b - , /* + { + b, + /* d */ e /* f */ - , ... + , + ... }: _ ) ( - { b - , /* + { + b, + /* d */ e /* f */ - , ... + , + ... /* h */ @@ -210,15 +233,17 @@ _ ) ( - { b - , /* + { + b, + /* d */ e /* f */ - , /* + , + /* g */ ... @@ -226,15 +251,17 @@ _ ) ( - { b - , /* + { + b, + /* d */ e /* f */ - , /* + , + /* g */ ... @@ -245,22 +272,26 @@ _ ) ( - { b + { + b /* c */ - , e - , ... + , + e, + ... }: _ ) ( - { b + { + b /* c */ - , e - , ... + , + e, + ... /* h */ @@ -268,12 +299,14 @@ _ ) ( - { b + { + b /* c */ - , e - , /* + , + e, + /* g */ ... @@ -281,12 +314,14 @@ _ ) ( - { b + { + b /* c */ - , e - , /* + , + e, + /* g */ ... @@ -297,28 +332,34 @@ _ ) ( - { b + { + b /* c */ - , e + , + e /* f */ - , ... + , + ... }: _ ) ( - { b + { + b /* c */ - , e + , + e /* f */ - , ... + , + ... /* h */ @@ -326,15 +367,18 @@ _ ) ( - { b + { + b /* c */ - , e + , + e /* f */ - , /* + , + /* g */ ... @@ -342,15 +386,18 @@ _ ) ( - { b + { + b /* c */ - , e + , + e /* f */ - , /* + , + /* g */ ... @@ -361,28 +408,32 @@ _ ) ( - { b + { + b /* c */ - , /* + , + /* d */ - e - , ... + e, + ... }: _ ) ( - { b + { + b /* c */ - , /* + , + /* d */ - e - , ... + e, + ... /* h */ @@ -390,15 +441,17 @@ _ ) ( - { b + { + b /* c */ - , /* + , + /* d */ - e - , /* + e, + /* g */ ... @@ -406,15 +459,17 @@ _ ) ( - { b + { + b /* c */ - , /* + , + /* d */ - e - , /* + e, + /* g */ ... @@ -425,34 +480,40 @@ _ ) ( - { b + { + b /* c */ - , /* + , + /* d */ e /* f */ - , ... + , + ... }: _ ) ( - { b + { + b /* c */ - , /* + , + /* d */ e /* f */ - , ... + , + ... /* h */ @@ -460,18 +521,21 @@ _ ) ( - { b + { + b /* c */ - , /* + , + /* d */ e /* f */ - , /* + , + /* g */ ... @@ -479,18 +543,21 @@ _ ) ( - { b + { + b /* c */ - , /* + , + /* d */ e /* f */ - , /* + , + /* g */ ... @@ -501,22 +568,24 @@ _ ) ( - { /* + { + /* a */ - b - , e - , ... + b, + e, + ... }: _ ) ( - { /* + { + /* a */ - b - , e - , ... + b, + e, + ... /* h */ @@ -524,12 +593,13 @@ _ ) ( - { /* + { + /* a */ - b - , e - , /* + b, + e, + /* g */ ... @@ -537,12 +607,13 @@ _ ) ( - { /* + { + /* a */ - b - , e - , /* + b, + e, + /* g */ ... @@ -553,28 +624,32 @@ _ ) ( - { /* + { + /* a */ - b - , e + b, + e /* f */ - , ... + , + ... }: _ ) ( - { /* + { + /* a */ - b - , e + b, + e /* f */ - , ... + , + ... /* h */ @@ -582,15 +657,17 @@ _ ) ( - { /* + { + /* a */ - b - , e + b, + e /* f */ - , /* + , + /* g */ ... @@ -598,15 +675,17 @@ _ ) ( - { /* + { + /* a */ - b - , e + b, + e /* f */ - , /* + , + /* g */ ... @@ -617,28 +696,30 @@ _ ) ( - { /* + { + /* a */ - b - , /* + b, + /* d */ - e - , ... + e, + ... }: _ ) ( - { /* + { + /* a */ - b - , /* + b, + /* d */ - e - , ... + e, + ... /* h */ @@ -646,15 +727,16 @@ _ ) ( - { /* + { + /* a */ - b - , /* + b, + /* d */ - e - , /* + e, + /* g */ ... @@ -662,15 +744,16 @@ _ ) ( - { /* + { + /* a */ - b - , /* + b, + /* d */ - e - , /* + e, + /* g */ ... @@ -681,34 +764,38 @@ _ ) ( - { /* + { + /* a */ - b - , /* + b, + /* d */ e /* f */ - , ... + , + ... }: _ ) ( - { /* + { + /* a */ - b - , /* + b, + /* d */ e /* f */ - , ... + , + ... /* h */ @@ -716,18 +803,20 @@ _ ) ( - { /* + { + /* a */ - b - , /* + b, + /* d */ e /* f */ - , /* + , + /* g */ ... @@ -735,18 +824,20 @@ _ ) ( - { /* + { + /* a */ - b - , /* + b, + /* d */ e /* f */ - , /* + , + /* g */ ... @@ -757,28 +848,32 @@ _ ) ( - { /* + { + /* a */ b /* c */ - , e - , ... + , + e, + ... }: _ ) ( - { /* + { + /* a */ b /* c */ - , e - , ... + , + e, + ... /* h */ @@ -786,15 +881,17 @@ _ ) ( - { /* + { + /* a */ b /* c */ - , e - , /* + , + e, + /* g */ ... @@ -802,15 +899,17 @@ _ ) ( - { /* + { + /* a */ b /* c */ - , e - , /* + , + e, + /* g */ ... @@ -821,34 +920,40 @@ _ ) ( - { /* + { + /* a */ b /* c */ - , e + , + e /* f */ - , ... + , + ... }: _ ) ( - { /* + { + /* a */ b /* c */ - , e + , + e /* f */ - , ... + , + ... /* h */ @@ -856,18 +961,21 @@ _ ) ( - { /* + { + /* a */ b /* c */ - , e + , + e /* f */ - , /* + , + /* g */ ... @@ -875,18 +983,21 @@ _ ) ( - { /* + { + /* a */ b /* c */ - , e + , + e /* f */ - , /* + , + /* g */ ... @@ -897,34 +1008,38 @@ _ ) ( - { /* + { + /* a */ b /* c */ - , /* + , + /* d */ - e - , ... + e, + ... }: _ ) ( - { /* + { + /* a */ b /* c */ - , /* + , + /* d */ - e - , ... + e, + ... /* h */ @@ -932,18 +1047,20 @@ _ ) ( - { /* + { + /* a */ b /* c */ - , /* + , + /* d */ - e - , /* + e, + /* g */ ... @@ -951,18 +1068,20 @@ _ ) ( - { /* + { + /* a */ b /* c */ - , /* + , + /* d */ - e - , /* + e, + /* g */ ... @@ -973,40 +1092,46 @@ _ ) ( - { /* + { + /* a */ b /* c */ - , /* + , + /* d */ e /* f */ - , ... + , + ... }: _ ) ( - { /* + { + /* a */ b /* c */ - , /* + , + /* d */ e /* f */ - , ... + , + ... /* h */ @@ -1014,21 +1139,24 @@ _ ) ( - { /* + { + /* a */ b /* c */ - , /* + , + /* d */ e /* f */ - , /* + , + /* g */ ... @@ -1036,21 +1164,24 @@ _ ) ( - { /* + { + /* a */ b /* c */ - , /* + , + /* d */ e /* f */ - , /* + , + /* g */ ... @@ -1063,37 +1194,40 @@ ({ a ? null }: _) ( - { /* + { + /* a */ b - /* - a - */ - ? - /* - a - */ - null + /* + a + */ + ? + /* + a + */ + null /* c */ - , /* + , + /* d */ e - /* - a - */ - ? - /* - a - */ - null + /* + a + */ + ? + /* + a + */ + null /* f */ - , /* + , + /* g */ ... @@ -1105,45 +1239,48 @@ ) ( - { /* + { + /* a */ # b - /* - a - */ - # - ? - /* - a - */ - # - null + /* + a + */ + # + ? + /* + a + */ + # + null /* c */ # - , /* + , + /* d */ # e - /* - a - */ - # - ? - /* - a - */ - # - null + /* + a + */ + # + ? + /* + a + */ + # + null /* f */ # - , /* + , + /* g */ #