From 7ec08170a56281291790cc84f27c5d0c3ebd4a3b Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 3 Sep 2010 19:13:47 +0400 Subject: [PATCH 1/2] Do not add unnecessary space when entering newline inside comment (PY-1739) --- python/testSrc/com/jetbrains/python/PyEditingTest.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/python/testSrc/com/jetbrains/python/PyEditingTest.java b/python/testSrc/com/jetbrains/python/PyEditingTest.java index 34f082a2b5ad..194fe23bb744 100644 --- a/python/testSrc/com/jetbrains/python/PyEditingTest.java +++ b/python/testSrc/com/jetbrains/python/PyEditingTest.java @@ -96,6 +96,10 @@ public class PyEditingTest extends PyLightFixtureTestCase { myFixture.checkResultByFile("/editing/uncommentWithSpace.after.py", true); } + public void testEnterInLineComment() { // PY-1739 + assertEquals("# foo\n# bar", doTestTyping("# foo bar", 5, '\n')); + } + private String doTestTyping(final String text, final int offset, final char character) { final PsiFile file = ApplicationManager.getApplication().runWriteAction(new Computable() { public PsiFile compute() { From c3ba4d0992807af8ec99c38006013ebb79e7904c Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 3 Sep 2010 19:26:52 +0400 Subject: [PATCH 2/2] one more case of dedenting after control flow break (PY-289) --- .../src/com/jetbrains/python/formatter/PyBlock.java | 3 +++ .../testSrc/com/jetbrains/python/PyIndentTest.java | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/python/src/com/jetbrains/python/formatter/PyBlock.java b/python/src/com/jetbrains/python/formatter/PyBlock.java index 2ca7cfb4ce47..d86e35c683e8 100644 --- a/python/src/com/jetbrains/python/formatter/PyBlock.java +++ b/python/src/com/jetbrains/python/formatter/PyBlock.java @@ -385,6 +385,9 @@ public class PyBlock implements ASTBlock { while (lastChild != null) { IElementType last_type = lastChild.getElementType(); if ( last_type == PyElementTypes.STATEMENT_LIST && hasLineBreakBefore(lastChild)) { + if (dedentAfterLastStatement((PyStatementList)lastChild.getPsi())) { + break; + } statementListsBelow++; } else if (statementListsBelow > 0 && lastChild.getPsi() instanceof PsiErrorElement) { diff --git a/python/testSrc/com/jetbrains/python/PyIndentTest.java b/python/testSrc/com/jetbrains/python/PyIndentTest.java index bece34187c21..1a145d66cfa9 100644 --- a/python/testSrc/com/jetbrains/python/PyIndentTest.java +++ b/python/testSrc/com/jetbrains/python/PyIndentTest.java @@ -167,6 +167,19 @@ public class PyIndentTest extends PyLightFixtureTestCase { " "); } + public void testUnindentAfterReturnNotLast() { // PY-289 + doTest("def foo():\n" + + " if True:\n" + + " return\n" + + "def bar(): pass", + "def foo():\n" + + " if True:\n" + + " return\n" + + " \n" + + "def bar(): pass" + ); + } + /* TODO: formatter core problem? public void testAlignListBeforeEquals() throws Exception {