diff --git a/idea/src/org/jetbrains/jet/plugin/formatter/JetCodeStyleSettings.java b/idea/src/org/jetbrains/jet/plugin/formatter/JetCodeStyleSettings.java index e6ccc82f97c..a5ddd3afe90 100644 --- a/idea/src/org/jetbrains/jet/plugin/formatter/JetCodeStyleSettings.java +++ b/idea/src/org/jetbrains/jet/plugin/formatter/JetCodeStyleSettings.java @@ -37,6 +37,7 @@ public class JetCodeStyleSettings extends CustomCodeStyleSettings { public boolean SPACE_AROUND_FUNCTION_TYPE_ARROW = true; public boolean SPACE_AROUND_WHEN_ARROW = true; + public boolean SPACE_BEFORE_LAMBDA_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 b810daccb87..b254adf099b 100644 --- a/idea/src/org/jetbrains/jet/plugin/formatter/JetFormattingModelBuilder.java +++ b/idea/src/org/jetbrains/jet/plugin/formatter/JetFormattingModelBuilder.java @@ -106,6 +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) + .beforeInside(ARROW, FUNCTION_LITERAL).spaceIf(jetSettings.SPACE_BEFORE_LAMBDA_ARROW) //when .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 56b38dbd07e..22d9ad23575 100644 --- a/idea/src/org/jetbrains/jet/plugin/formatter/JetLanguageCodeStyleSettingsProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/formatter/JetLanguageCodeStyleSettingsProvider.java @@ -130,6 +130,11 @@ public class JetLanguageCodeStyleSettingsProvider extends LanguageCodeStyleSetti consumer.showCustomOption(JetCodeStyleSettings.class, "SPACE_AROUND_WHEN_ARROW", "Surround arrow in \"when\" clause with spaces", CodeStyleSettingsCustomizable.SPACES_OTHER); + + consumer.showCustomOption(JetCodeStyleSettings.class, "SPACE_BEFORE_LAMBDA_ARROW", + "Before lambda arrow", + CodeStyleSettingsCustomizable.SPACES_OTHER); + break; case WRAPPING_AND_BRACES_SETTINGS: consumer.showStandardOptions( diff --git a/idea/testData/formatter/LambdaArrow.kt b/idea/testData/formatter/LambdaArrow.kt new file mode 100644 index 00000000000..ccaae3ddf93 --- /dev/null +++ b/idea/testData/formatter/LambdaArrow.kt @@ -0,0 +1,3 @@ +val f: (Int, Int, Int) -> Int = { x, y, z -> x + y + z } + +// SET_FALSE: SPACE_BEFORE_LAMBDA_ARROW \ No newline at end of file diff --git a/idea/testData/formatter/LambdaArrow_after.kt b/idea/testData/formatter/LambdaArrow_after.kt new file mode 100644 index 00000000000..60fd61f3099 --- /dev/null +++ b/idea/testData/formatter/LambdaArrow_after.kt @@ -0,0 +1,3 @@ +val f: (Int, Int, Int) -> Int = { x, y, z-> x + y + z } + +// SET_FALSE: SPACE_BEFORE_LAMBDA_ARROW \ No newline at end of file diff --git a/idea/testData/formatter/LambdaArrow_after_inv.kt b/idea/testData/formatter/LambdaArrow_after_inv.kt new file mode 100644 index 00000000000..c9a3caca990 --- /dev/null +++ b/idea/testData/formatter/LambdaArrow_after_inv.kt @@ -0,0 +1,3 @@ +val f: (Int, Int, Int) -> Int = { x, y, z -> x + y + z } + +// SET_FALSE: SPACE_BEFORE_LAMBDA_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 ff49ea3c73a..860bf045c76 100644 --- a/idea/tests/org/jetbrains/jet/formatter/JetFormatterTest.java +++ b/idea/tests/org/jetbrains/jet/formatter/JetFormatterTest.java @@ -143,6 +143,10 @@ public class JetFormatterTest extends AbstractJetFormatterTest { doTestWithInvert(); } + public void testLambdaArrow() throws Exception { + doTestWithInvert(); + } + @Override public void doTest() throws Exception { String originalFileText = AbstractJetFormatterTest.loadFile(getTestName(false) + ".kt");