From a0b8b18a5652a4e2cfea9cd1e161e77b6faca828 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Fri, 2 Dec 2011 12:19:43 +0100 Subject: [PATCH] fixed PY-5198 Move statement: breaks code in case of one-line compound statements on module level --- .../codeInsight/editorActions/moveUpDown/StatementMover.java | 3 +++ python/testData/mover/oneLineCompound.py | 3 +++ python/testData/mover/oneLineCompound_afterDown.py | 3 +++ python/testData/mover/oneLineCompound_afterUp.py | 4 ++++ python/testSrc/com/jetbrains/python/PyStatementMoverTest.java | 4 ++++ 5 files changed, 17 insertions(+) create mode 100644 python/testData/mover/oneLineCompound.py create mode 100644 python/testData/mover/oneLineCompound_afterDown.py create mode 100644 python/testData/mover/oneLineCompound_afterUp.py diff --git a/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java b/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java index bfadbf105f69..7c6b91609871 100644 --- a/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java +++ b/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java @@ -325,6 +325,9 @@ public class StatementMover extends LineMover { PsiElement whiteSpace = myStatementToAddLinebreak.getContainingFile().findElementAt(editor.getDocument().getLineStartOffset(line)); String indent = StringUtil.repeatSymbol(' ', indentOptions.INDENT_SIZE); + + PyStatementWithElse statementWithElse = PsiTreeUtil.getParentOfType(myStatementToAddLinebreak, PyStatementWithElse.class); + if (statementWithElse != null && statementWithElse.getParent() instanceof PyFile) indent = "\n"; if (whiteSpace instanceof PsiWhiteSpace) indent += whiteSpace.getText(); if (down) indent += StringUtil.repeatSymbol(' ', indentOptions.INDENT_SIZE); editor.getDocument().insertString(textRange.getStartOffset(), indent); diff --git a/python/testData/mover/oneLineCompound.py b/python/testData/mover/oneLineCompound.py new file mode 100644 index 000000000000..1fcc496af986 --- /dev/null +++ b/python/testData/mover/oneLineCompound.py @@ -0,0 +1,3 @@ +c = 1 +if True: a = 1 +b = 2 \ No newline at end of file diff --git a/python/testData/mover/oneLineCompound_afterDown.py b/python/testData/mover/oneLineCompound_afterDown.py new file mode 100644 index 000000000000..0ff799819ed7 --- /dev/null +++ b/python/testData/mover/oneLineCompound_afterDown.py @@ -0,0 +1,3 @@ +c = 1 +if True: a = 1 +b = 2 \ No newline at end of file diff --git a/python/testData/mover/oneLineCompound_afterUp.py b/python/testData/mover/oneLineCompound_afterUp.py new file mode 100644 index 000000000000..849b84ac1227 --- /dev/null +++ b/python/testData/mover/oneLineCompound_afterUp.py @@ -0,0 +1,4 @@ +c = 1 +if True: + a = 1 + b = 2 \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java b/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java index 056510d08fee..3eca94418fcb 100644 --- a/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java +++ b/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java @@ -107,4 +107,8 @@ public class PyStatementMoverTest extends PyTestCase { public void testClass() { // PY-5196 doTest(); } + + public void testOneLineCompound() { // PY-5198 + doTest(); + } }