From 233472ef2593e5af43397048ea4ba5dd1538bf24 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 24 Jun 2011 14:24:10 +0200 Subject: [PATCH] honor "around class" option for blank lines before non-top-level class (PY-3729) --- python/src/com/jetbrains/python/formatter/PyBlock.java | 3 +++ python/testData/formatter/blankLineAroundClasses.py | 4 ++++ .../testData/formatter/blankLineAroundClasses_after.py | 10 ++++++++++ .../testSrc/com/jetbrains/python/PyFormatterTest.java | 2 ++ 4 files changed, 19 insertions(+) diff --git a/python/src/com/jetbrains/python/formatter/PyBlock.java b/python/src/com/jetbrains/python/formatter/PyBlock.java index 052ad0b5634a..40169cac6b31 100644 --- a/python/src/com/jetbrains/python/formatter/PyBlock.java +++ b/python/src/com/jetbrains/python/formatter/PyBlock.java @@ -306,6 +306,9 @@ public class PyBlock implements ASTBlock { } return getBlankLinesForOption(mySettings.BLANK_LINES_AROUND_CLASS); } + if (type2 == PyElementTypes.CLASS_DECLARATION && !(parentType instanceof PyFileElementType)) { + return getBlankLinesForOption(mySettings.BLANK_LINES_AROUND_CLASS); + } if (type1 == PyElementTypes.FUNCTION_DECLARATION && (type2 == PyElementTypes.CLASS_DECLARATION || type2 == PyElementTypes.FUNCTION_DECLARATION) && parentType instanceof PyFileElementType) { diff --git a/python/testData/formatter/blankLineAroundClasses.py b/python/testData/formatter/blankLineAroundClasses.py index 781b3e90d1f2..2ac3364fa630 100644 --- a/python/testData/formatter/blankLineAroundClasses.py +++ b/python/testData/formatter/blankLineAroundClasses.py @@ -1,4 +1,8 @@ class Adjunct: def apply(self, right, arg): pass + class A: pass + def foo(): pass + class B: pass + print '239' \ No newline at end of file diff --git a/python/testData/formatter/blankLineAroundClasses_after.py b/python/testData/formatter/blankLineAroundClasses_after.py index 4a6db0bce31f..61196d4c186c 100644 --- a/python/testData/formatter/blankLineAroundClasses_after.py +++ b/python/testData/formatter/blankLineAroundClasses_after.py @@ -2,4 +2,14 @@ class Adjunct: def apply(self, right, arg): pass + + class A: pass + + + def foo(): pass + + + class B: pass + + print '239' \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/PyFormatterTest.java b/python/testSrc/com/jetbrains/python/PyFormatterTest.java index 7dccaf20f589..80e4413d11cd 100644 --- a/python/testSrc/com/jetbrains/python/PyFormatterTest.java +++ b/python/testSrc/com/jetbrains/python/PyFormatterTest.java @@ -4,6 +4,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.codeStyle.CodeStyleManager; +import com.intellij.psi.codeStyle.CodeStyleSettingsManager; import com.jetbrains.python.fixtures.PyLightFixtureTestCase; import com.jetbrains.python.psi.LanguageLevel; import com.jetbrains.python.psi.PyElementGenerator; @@ -18,6 +19,7 @@ public class PyFormatterTest extends PyLightFixtureTestCase { } public void testBlankLineAroundClasses() { + CodeStyleSettingsManager.getSettings(myFixture.getProject()).BLANK_LINES_AROUND_CLASS = 2; doTest(); }