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 f97d68198482..476a026bf42f 100644 --- a/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java +++ b/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java @@ -88,6 +88,7 @@ public class StatementMover extends LineMover { info.toMove2 = new LineRange(myStatementToMove); } if (isMoveToCompound(info, editor, file, down)) { + if (isMoveToEmptyLine(editor, info)) return true; myStatementToIncreaseIndent = myStatementToMove; if (!down) info.toMove2 = new LineRange(myStatementToMove); @@ -157,7 +158,9 @@ public class StatementMover extends LineMover { info.toMove = range; info.toMove2 = new LineRange(nearLine, nearLine + 1); + if (isMoveToEmptyLine(editor, info)) return; // if try to move to the function or to the class + int offset2 = getLineStartSafeOffset(doc, info.toMove2.startLine); PsiElement element2 = file.findElementAt(offset2); if (element2 != null) { @@ -185,6 +188,15 @@ public class StatementMover extends LineMover { } } } + + private boolean isMoveToEmptyLine(Editor editor, MoveInfo info) { + Document document = editor.getDocument(); + if (document.getLineCount() > info.toMove2.endLine) { + String lineToMoveTo = document.getText(new TextRange(getLineStartSafeOffset(document, info.toMove2.startLine), getLineStartSafeOffset(document, info.toMove2.endLine))); + if (StringUtil.isEmptyOrSpaces(lineToMoveTo)) return true; + } + return false; + } /** * main indent logic diff --git a/python/testData/mover/doubleIf.py b/python/testData/mover/doubleIf.py index fc6eb136e1bb..82277d913cde 100644 --- a/python/testData/mover/doubleIf.py +++ b/python/testData/mover/doubleIf.py @@ -1,6 +1,5 @@ if condition1: pass - if condition: test1() else: diff --git a/python/testData/mover/doubleIf_afterDown.py b/python/testData/mover/doubleIf_afterDown.py index d2cb93b4236a..877ff0ebc48c 100644 --- a/python/testData/mover/doubleIf_afterDown.py +++ b/python/testData/mover/doubleIf_afterDown.py @@ -1,6 +1,5 @@ if condition1: pass - if condition: test1() else: diff --git a/python/testData/mover/emptyLine.py b/python/testData/mover/emptyLine.py new file mode 100644 index 000000000000..4f0b48468795 --- /dev/null +++ b/python/testData/mover/emptyLine.py @@ -0,0 +1,4 @@ +if True: + a = 1 + +b = 2 \ No newline at end of file diff --git a/python/testData/mover/emptyLine_afterDown.py b/python/testData/mover/emptyLine_afterDown.py new file mode 100644 index 000000000000..c9988196c234 --- /dev/null +++ b/python/testData/mover/emptyLine_afterDown.py @@ -0,0 +1,4 @@ +if True: + a = 1 + +b = 2 \ No newline at end of file diff --git a/python/testData/mover/emptyLine_afterUp.py b/python/testData/mover/emptyLine_afterUp.py new file mode 100644 index 000000000000..867eaf02bbbd --- /dev/null +++ b/python/testData/mover/emptyLine_afterUp.py @@ -0,0 +1,4 @@ +if True: + a = 1 +b = 2 + diff --git a/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java b/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java index 3eca94418fcb..dad281ab0479 100644 --- a/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java +++ b/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java @@ -111,4 +111,8 @@ public class PyStatementMoverTest extends PyTestCase { public void testOneLineCompound() { // PY-5198 doTest(); } + + public void testEmptyLine() { // PY-5197 + doTest(); + } }