diff --git a/idea/src/org/jetbrains/jet/plugin/formatter/JetBlock.java b/idea/src/org/jetbrains/jet/plugin/formatter/JetBlock.java index e2f19e414d8..fc96eed1076 100644 --- a/idea/src/org/jetbrains/jet/plugin/formatter/JetBlock.java +++ b/idea/src/org/jetbrains/jet/plugin/formatter/JetBlock.java @@ -267,7 +267,7 @@ public class JetBlock extends AbstractBlock { .forType(PROPERTY_ACCESSOR) .set(Indent.getNormalIndent()), - ASTIndentStrategy.forNode("For a single statement if 'for'") + ASTIndentStrategy.forNode("For a single statement in 'for'") .in(BODY) .notForType(BLOCK) .set(Indent.getNormalIndent()), @@ -302,6 +302,13 @@ public class JetBlock extends AbstractBlock { ASTNode childParent = child.getTreeParent(); IElementType childType = child.getElementType(); + // SCRIPT: Avoid indenting script top BLOCK contents + if (childParent != null && childParent.getTreeParent() != null) { + if (childParent.getElementType() == BLOCK && childParent.getTreeParent().getElementType() == SCRIPT) { + return Indent.getNoneIndent(); + } + } + for (ASTIndentStrategy strategy : INDENT_RULES) { Indent indent = strategy.getIndent(child); if (indent != null) { diff --git a/idea/testData/formatter/Script.after.kts b/idea/testData/formatter/Script.after.kts new file mode 100644 index 00000000000..0d419be39e8 --- /dev/null +++ b/idea/testData/formatter/Script.after.kts @@ -0,0 +1,9 @@ +import a.b.c + +val x = 0 +fun fn() { + println(x) +} + +var y = fn() +y = y + 1 diff --git a/idea/testData/formatter/Script.kts b/idea/testData/formatter/Script.kts new file mode 100644 index 00000000000..8b6c78b5738 --- /dev/null +++ b/idea/testData/formatter/Script.kts @@ -0,0 +1,8 @@ +import a.b.c +val x = 0 + fun fn() { + println(x) +} + + var y = fn() + y = y+1