diff --git a/idea/src/org/jetbrains/jet/plugin/formatter/JetCodeStyleSettings.java b/idea/src/org/jetbrains/jet/plugin/formatter/JetCodeStyleSettings.java index b5a2d2d40c6..c04f4e9b829 100644 --- a/idea/src/org/jetbrains/jet/plugin/formatter/JetCodeStyleSettings.java +++ b/idea/src/org/jetbrains/jet/plugin/formatter/JetCodeStyleSettings.java @@ -34,6 +34,8 @@ public class JetCodeStyleSettings extends CustomCodeStyleSettings { public boolean INSERT_WHITESPACES_IN_SIMPLE_ONE_LINE_METHOD = true; public boolean ALIGN_IN_COLUMNS_CASE_BRANCH = false; + public boolean SPACE_AROUND_WHEN_ARROW = true; + public static JetCodeStyleSettings getInstance(Project project) { return CodeStyleSettingsManager.getSettings(project).getCustomSettings(JetCodeStyleSettings.class); } diff --git a/idea/src/org/jetbrains/jet/plugin/formatter/JetFormattingModelBuilder.java b/idea/src/org/jetbrains/jet/plugin/formatter/JetFormattingModelBuilder.java index 6db9356dbb8..afcb90f39b0 100644 --- a/idea/src/org/jetbrains/jet/plugin/formatter/JetFormattingModelBuilder.java +++ b/idea/src/org/jetbrains/jet/plugin/formatter/JetFormattingModelBuilder.java @@ -36,11 +36,11 @@ public class JetFormattingModelBuilder implements FormattingModelBuilder { public FormattingModel createModel(PsiElement element, CodeStyleSettings settings) { PsiFile containingFile = element.getContainingFile().getViewProvider().getPsi(JetLanguage.INSTANCE); JetBlock block = new JetBlock( - containingFile.getNode(), ASTAlignmentStrategy.getNullStrategy(), Indent.getNoneIndent(), null, settings, - createSpacingBuilder(settings)); + containingFile.getNode(), ASTAlignmentStrategy.getNullStrategy(), Indent.getNoneIndent(), null, settings, + createSpacingBuilder(settings)); return FormattingModelProvider.createFormattingModelForPsiFile( - element.getContainingFile(), block, settings); + element.getContainingFile(), block, settings); } private static SpacingBuilder createSpacingBuilder(CodeStyleSettings settings) { @@ -106,7 +106,7 @@ public class JetFormattingModelBuilder implements FormattingModelBuilder { .afterInside(COLON, TYPE_PARAMETER).spaceIf(jetSettings.SPACE_AFTER_EXTEND_COLON) .between(VALUE_ARGUMENT_LIST, FUNCTION_LITERAL_EXPRESSION).spaces(1) - .aroundInside(ARROW, WHEN_ENTRY).spaces(1) + .aroundInside(ARROW, WHEN_ENTRY).spaceIf(jetSettings.SPACE_AROUND_WHEN_ARROW) ; } diff --git a/idea/src/org/jetbrains/jet/plugin/formatter/JetLanguageCodeStyleSettingsProvider.java b/idea/src/org/jetbrains/jet/plugin/formatter/JetLanguageCodeStyleSettingsProvider.java index fe4ec87aafa..a65cd6bb91b 100644 --- a/idea/src/org/jetbrains/jet/plugin/formatter/JetLanguageCodeStyleSettingsProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/formatter/JetLanguageCodeStyleSettingsProvider.java @@ -123,6 +123,9 @@ public class JetLanguageCodeStyleSettingsProvider extends LanguageCodeStyleSetti "Insert whitespaces in simple one line methods", CodeStyleSettingsCustomizable.SPACES_OTHER); + consumer.showCustomOption(JetCodeStyleSettings.class, "SPACE_AROUND_WHEN_ARROW", + "Surround arrow in \"when\" clause with spaces", + CodeStyleSettingsCustomizable.SPACES_OTHER); break; case WRAPPING_AND_BRACES_SETTINGS: consumer.showStandardOptions( diff --git a/idea/testData/formatter/WhenArrow.kt b/idea/testData/formatter/WhenArrow.kt new file mode 100644 index 00000000000..2db856359b1 --- /dev/null +++ b/idea/testData/formatter/WhenArrow.kt @@ -0,0 +1,8 @@ +fun f(x: Any): Int { + return when (x) { + is Int ->1 + else->0 + } +} + +// SET_FALSE: SPACE_AROUND_WHEN_ARROW \ No newline at end of file diff --git a/idea/testData/formatter/WhenArrow_after.kt b/idea/testData/formatter/WhenArrow_after.kt new file mode 100644 index 00000000000..405fc9833be --- /dev/null +++ b/idea/testData/formatter/WhenArrow_after.kt @@ -0,0 +1,8 @@ +fun f(x: Any): Int { + return when (x) { + is Int->1 + else->0 + } +} + +// SET_FALSE: SPACE_AROUND_WHEN_ARROW \ No newline at end of file diff --git a/idea/testData/formatter/WhenArrow_after_inv.kt b/idea/testData/formatter/WhenArrow_after_inv.kt new file mode 100644 index 00000000000..1a19bc413e7 --- /dev/null +++ b/idea/testData/formatter/WhenArrow_after_inv.kt @@ -0,0 +1,8 @@ +fun f(x: Any): Int { + return when (x) { + is Int -> 1 + else -> 0 + } +} + +// SET_FALSE: SPACE_AROUND_WHEN_ARROW \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/formatter/JetFormatterTest.java b/idea/tests/org/jetbrains/jet/formatter/JetFormatterTest.java index dba2cdc827e..95afa1cbd09 100644 --- a/idea/tests/org/jetbrains/jet/formatter/JetFormatterTest.java +++ b/idea/tests/org/jetbrains/jet/formatter/JetFormatterTest.java @@ -131,6 +131,10 @@ public class JetFormatterTest extends AbstractJetFormatterTest { doTest(); } + public void testWhenArrow() throws Exception { + doTestWithInvert(); + } + @Override public void doTest() throws Exception { String originalFileText = AbstractJetFormatterTest.loadFile(getTestName(false) + ".kt");