From d312fa9784b18dc5a56b152245afb41d44583c50 Mon Sep 17 00:00:00 2001 From: Denis Zhdanov Date: Thu, 16 Sep 2010 13:10:34 +0400 Subject: [PATCH] IDEA-58664 Blank Lines Before method body also appear inside try/catch/finally's {} Refined appliance conditions for 'blank lines before method body' setting --- .../java/JavaSpacePropertyProcessor.java | 12 ++++++++- .../java/JavaFormatterBlankLinesTest.java | 27 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java b/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java index 4af29e1b1990..ab2b60d30939 100644 --- a/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java +++ b/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java @@ -683,8 +683,18 @@ public class JavaSpacePropertyProcessor extends JavaElementVisitor { } else if (myRole1 == ChildRole.LBRACE) { if (!keepInOneLine) { + int blankLines = 1; + if (myParent != null) { + ASTNode parentNode = myParent.getNode(); + if (parentNode != null) { + ASTNode grandPa = parentNode.getTreeParent(); + if (grandPa != null && grandPa.getElementType() == JavaElementType.METHOD) { + blankLines += mySettings.BLANK_LINES_BEFORE_METHOD_BODY; + } + } + } myResult = Spacing.createSpacing( - 0, 0, mySettings.BLANK_LINES_BEFORE_METHOD_BODY + 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE + 0, 0, blankLines, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE ); } else { diff --git a/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterBlankLinesTest.java b/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterBlankLinesTest.java index 3c795695d7fc..74f53a7d73a8 100644 --- a/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterBlankLinesTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterBlankLinesTest.java @@ -350,4 +350,31 @@ public class JavaFormatterBlankLinesTest extends AbstractJavaFormatterTest { "}" ); } + + public void testBeforeMethodBodyWithCodeBlockInside() { + // Inspired by IDEA-54747 + getSettings().BLANK_LINES_BEFORE_METHOD_BODY = 3; + doTextTest( + "public class FormattingTest {\n" + + " public void foo() {\n" + + " System.out.println(\"\");\n" + + " try {\n" + + " } catch (Exception e) {\n" + + " }\n" + + " }\n" + + "}", + + "public class FormattingTest {\n" + + " public void foo() {\n" + + "\n" + + "\n" + + "\n" + + " System.out.println(\"\");\n" + + " try {\n" + + " } catch (Exception e) {\n" + + " }\n" + + " }\n" + + "}" + ); + } }