boolean (PsiElement blockPsi, List<ASTNode> children) { // We don't want to align single call argument if it's a closure. The reason is that it looks better to have call like // // foo({ // println 'xxx' // }) // // than // // foo({ // println 'xxx' // }) if (blockPsi instanceof GrArgumentList && myContext.getSettings().ALIGN_MULTILINE_PARAMETERS_IN_CALLS) { return !(children.size() == 3 && children.get(0).getElementType() == GroovyTokenTypes.mLPAREN && (children.get(1).getElementType() == GroovyElementTypes.CLOSABLE_BLOCK || children.get(1).getElementType() == GroovyElementTypes.LIST_OR_MAP) && children.get(2).getElementType() == GroovyTokenTypes.mRPAREN); } if (blockPsi instanceof GrAssignmentExpression && ((GrAssignmentExpression)blockPsi).getRValue() instanceof GrAssignmentExpression) { return myContext.getSettings().ALIGN_MULTILINE_ASSIGNMENT; } return blockPsi instanceof GrExtendsClause && myContext.getSettings().ALIGN_MULTILINE_EXTENDS_LIST || blockPsi instanceof GrThrowsClause && myContext.getSettings().ALIGN_MULTILINE_THROWS_LIST || blockPsi instanceof GrListOrMap && myContext.getGroovySettings().ALIGN_MULTILINE_LIST_OR_MAP || blockPsi instanceof GrTryResourceList && myContext.getSettings().ALIGN_MULTILINE_RESOURCES || blockPsi instanceof GrArrayInitializer && myContext.getSettings().ALIGN_MULTILINE_ARRAY_INITIALIZER_EXPRESSION; }