From caa3770f0da4fae9d345af2be5e6747ada81ef77 Mon Sep 17 00:00:00 2001 From: Yaroslav Lepenkin Date: Wed, 2 Dec 2015 18:38:55 +0300 Subject: [PATCH] IDEA-148214 After expanding indents restore only alignments which can be moved in the middle of line (isAllowBackwardShift == true) --- ...ormatterMultilineMethodCallParamsTest.java | 29 +++++++++++++++++++ .../intellij/formatting/FormatProcessor.java | 5 +++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterMultilineMethodCallParamsTest.java b/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterMultilineMethodCallParamsTest.java index 1596c605d986..b5f6a114f7a0 100644 --- a/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterMultilineMethodCallParamsTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterMultilineMethodCallParamsTest.java @@ -126,6 +126,35 @@ public class JavaFormatterMultilineMethodCallParamsTest extends AbstractJavaForm ");\n" ); } + + public void testMethodBracketsAlignment() { + getSettings().ALIGN_MULTILINE_METHOD_BRACKETS = true; + doTextTest( + "public class Foo {\n" + + " private IntPredicate example1() {\n" + + " return Boo.combine(Boo.p1(),\n" + + " Boo.p2());\n" + + " }\n" + + " \n" + + " private boolean example2() {\n" + + " return IntStream.range(0, 4).allMatch(Boo.combine(Boo.p1(),\n" + + " Boo.p2()));\n" + + " }\n" + + "}", + "public class Foo {\n" + + " private IntPredicate example1() {\n" + + " return Boo.combine(Boo.p1(),\n" + + " Boo.p2());\n" + + " }\n" + + "\n" + + " private boolean example2() {\n" + + " return IntStream.range(0, 4).allMatch(Boo.combine(Boo.p1(),\n" + + " Boo.p2()));\n" + + " }\n" + + "}" + ); + } + } diff --git a/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java b/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java index a725021076e2..fa169c2db3f6 100644 --- a/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java +++ b/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java @@ -1650,7 +1650,10 @@ public class FormatProcessor { private void restoreAlignments(MultiMap blocks) { for (Alignment alignment : blocks.keySet()) { - Set toRealign = ((AlignmentImpl)alignment).getOffsetResponsibleBlocks(); + AlignmentImpl alignmentImpl = (AlignmentImpl)alignment; + if (!alignmentImpl.isAllowBackwardShift()) continue; + + Set toRealign = alignmentImpl.getOffsetResponsibleBlocks(); arrangeSpaces(toRealign); LeafBlockWrapper rightMostBlock = getRightMostBlock(toRealign);