diff --git a/src/alejandra/src/builder.rs b/src/alejandra/src/builder.rs index 47c57ac..a455464 100644 --- a/src/alejandra/src/builder.rs +++ b/src/alejandra/src/builder.rs @@ -22,6 +22,7 @@ pub(crate) struct BuildCtx { pub pos_old: crate::position::Position, pub path: String, pub vertical: bool, + pub indent: String, } pub(crate) fn build( @@ -99,7 +100,7 @@ fn build_step( add_token( builder, rnix::SyntaxKind::TOKEN_WHITESPACE, - &format!("{0:<1$}", "", 2 * build_ctx.indentation), + &build_ctx.indent.repeat(build_ctx.indentation), ); } } diff --git a/src/alejandra/src/format.rs b/src/alejandra/src/format.rs index 9675da1..3bec33e 100644 --- a/src/alejandra/src/format.rs +++ b/src/alejandra/src/format.rs @@ -39,6 +39,7 @@ pub fn in_memory( path, pos_old: crate::position::Position::default(), vertical: true, + indent, }; let after = crate::builder::build(&mut build_ctx, ast.node().into()) diff --git a/src/alejandra/tests/indent/apply/in.nix b/src/alejandra/tests/indent/apply/in.nix new file mode 100644 index 0000000..f46244b --- /dev/null +++ b/src/alejandra/tests/indent/apply/in.nix @@ -0,0 +1,6 @@ +{ + foo = + bar: + baz: + fnbody; +} diff --git a/src/alejandra/tests/indent/apply/out.nix b/src/alejandra/tests/indent/apply/out.nix new file mode 100644 index 0000000..5b84a74 --- /dev/null +++ b/src/alejandra/tests/indent/apply/out.nix @@ -0,0 +1,4 @@ +{ + foo = bar: baz: + fnbody; +} diff --git a/src/alejandra/tests/indent/attr_set/in.nix b/src/alejandra/tests/indent/attr_set/in.nix new file mode 100644 index 0000000..97c9f4c --- /dev/null +++ b/src/alejandra/tests/indent/attr_set/in.nix @@ -0,0 +1,11 @@ +{ + a = rec { + a = { + a = rec { + a = { + a = rec {a = {a = rec {a = {a = rec {a = {};};};};};}; + }; + }; + }; + }; + } diff --git a/src/alejandra/tests/indent/attr_set/out.nix b/src/alejandra/tests/indent/attr_set/out.nix new file mode 100644 index 0000000..ec6e5a0 --- /dev/null +++ b/src/alejandra/tests/indent/attr_set/out.nix @@ -0,0 +1,11 @@ +{ + a = rec { + a = { + a = rec { + a = { + a = rec {a = {a = rec {a = {a = rec {a = {};};};};};}; + }; + }; + }; + }; +} diff --git a/src/alejandra/tests/indent/list/in.nix b/src/alejandra/tests/indent/list/in.nix new file mode 100644 index 0000000..f5285aa --- /dev/null +++ b/src/alejandra/tests/indent/list/in.nix @@ -0,0 +1,11 @@ +[ + # over indented + 1 + # under indented + 2 +# no indentation + [1 2] + [ + 1 2 3 + ] +] diff --git a/src/alejandra/tests/indent/list/out.nix b/src/alejandra/tests/indent/list/out.nix new file mode 100644 index 0000000..b319a6d --- /dev/null +++ b/src/alejandra/tests/indent/list/out.nix @@ -0,0 +1,13 @@ +[ + # over indented + 1 + # under indented + 2 + # no indentation + [1 2] + [ + 1 + 2 + 3 + ] +]