From b78164399dec29b554a0f7e7bf112daec36f9fbd Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Wed, 1 May 2013 18:01:42 +0400 Subject: [PATCH] align conditional expression --- .../formatter/GroovyBlockGenerator.java | 12 ++++++++++ .../lang/formatter/FormatterTest.groovy | 24 +++++++++++++++++++ 2 files changed, 36 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 de5cf4352b20..29bcbc091075 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/formatter/GroovyBlockGenerator.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/formatter/GroovyBlockGenerator.java @@ -289,6 +289,18 @@ public class GroovyBlockGenerator implements GroovyElementTypes { } } + else if (blockPsi instanceof GrConditionalExpression) { + if (mySettings.ALIGN_MULTILINE_TERNARY_OPERATION) { + final GrConditionalExpression conditional = (GrConditionalExpression)blockPsi; + + final AlignmentProvider.Aligner aligner = myAlignmentProvider.createAligner(false); + aligner.append(conditional.getCondition()); + if (!(conditional instanceof GrElvisExpression)) { + aligner.append(conditional.getThenBranch()); + } + aligner.append(conditional.getElseBranch()); + } + } // For other cases final ArrayList subBlocks = new ArrayList(); 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 ceb0a0414bde..2f620c082434 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 @@ -694,6 +694,30 @@ for (int i = 3; } + void testConditional0() { + groovySettings.ALIGN_MULTILINE_TERNARY_OPERATION = true + checkFormatting '''\ +print abc ? +cde: +xyz +''', '''\ +print abc ? + cde : + xyz +''' + } + + void testConditional1() { + groovySettings.ALIGN_MULTILINE_TERNARY_OPERATION = true + checkFormatting '''\ +print abc ?: +xyz +''', '''\ +print abc ?: + xyz +''' + } + private void doGeeseTest() { GroovyCodeStyleSettings customSettings = myTempSettings.getCustomSettings(GroovyCodeStyleSettings.class); boolean oldvalue = customSettings.USE_FLYING_GEESE_BRACES;