From 2ff1ca341a3e181202fbd77d04c3c62310a25039 Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Wed, 1 May 2013 14:45:47 +0400 Subject: [PATCH] align method parentheses --- .../groovy/formatter/GroovyBlockGenerator.java | 14 ++++++++++++++ .../groovy/lang/formatter/FormatterTest.groovy | 13 +++++++++++++ 2 files changed, 27 insertions(+) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/formatter/GroovyBlockGenerator.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/formatter/GroovyBlockGenerator.java index ef77d7bc6b02..058ea80c4750 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/formatter/GroovyBlockGenerator.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/formatter/GroovyBlockGenerator.java @@ -62,6 +62,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrM import org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameterList; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrExtendsClause; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefinitionBody; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod; import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil; import java.util.ArrayList; @@ -243,6 +244,19 @@ public class GroovyBlockGenerator implements GroovyElementTypes { return generateSubBlockForCodeBlocks(classLevel, visibleChildren(myNode)); } + if (blockPsi instanceof GrMethod) { + final AlignmentProvider.Aligner parenthesesAligner = mySettings.ALIGN_MULTILINE_METHOD_BRACKETS ? myAlignmentProvider.createAligner(false) : null; + + final ArrayList subBlocks = new ArrayList(); + for (ASTNode childNode : visibleChildren(myNode)) { + final Indent indent = new GroovyIndentProcessor().getChildIndent(myBlock, childNode); + if (childNode.getElementType() == mLPAREN && parenthesesAligner != null) parenthesesAligner.append(childNode.getPsi()); + if (childNode.getElementType() == mRPAREN && parenthesesAligner != null) parenthesesAligner.append(childNode.getPsi()); + subBlocks.add(new GroovyBlock(childNode, indent, myWrap, mySettings, myGroovySettings, myAlignmentProvider)); + } + return subBlocks; + } + // For other cases final ArrayList subBlocks = new ArrayList(); for (ASTNode childNode : visibleChildren(myNode)) { diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/formatter/FormatterTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/formatter/FormatterTest.groovy index 4820841ab8bc..49a5a0ce582e 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/formatter/FormatterTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/formatter/FormatterTest.groovy @@ -587,6 +587,19 @@ foo( ) ''') } + void testAlignMethodParentheses() { + groovySettings.ALIGN_MULTILINE_METHOD_BRACKETS = true + checkFormatting('''\ +def foooo( +String s +) {} +''', '''\ +def foooo( + String s + ) {} +''') + } + private void doGeeseTest() { GroovyCodeStyleSettings customSettings = myTempSettings.getCustomSettings(GroovyCodeStyleSettings.class); boolean oldvalue = customSettings.USE_FLYING_GEESE_BRACES;