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 513d5d06b781..d3c966bcb4ef 100644 --- a/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java +++ b/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java @@ -35,6 +35,7 @@ public class StatementMover extends LineMover { @Nullable private PsiElement myStatementToMove; @Nullable private PyStatementPart myStatementPartToRemovePass; private boolean moveToEmptyLine = false; + private boolean theSameLevel; private void init(@NotNull final Editor editor, @NotNull final MoveInfo info, final boolean down) { LineRange range = StatementUpDownMover.getLineRangeFromSelection(editor); @@ -105,7 +106,7 @@ public class StatementMover extends LineMover { expandLineRangeToStatement(info, editor, down, file); //is move from one part of compound statement to another - boolean theSameLevel = isTheSameIndentLevel(info, editor, file, down); + theSameLevel = isTheSameIndentLevel(info, editor, file, down); //check we move statement into compound or out of compound if (isMoveOut(info, editor, file, down)) { @@ -425,7 +426,8 @@ public class StatementMover extends LineMover { 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); + if (down || theSameLevel) indent += StringUtil.repeatSymbol(' ', indentOptions.INDENT_SIZE); + if (theSameLevel) info.toMove = info.toMove2; editor.getDocument().insertString(textRange.getStartOffset(), indent); } // add pass statement if needed diff --git a/python/testData/mover/indentedOneLine.py b/python/testData/mover/indentedOneLine.py new file mode 100644 index 000000000000..3d04e4fb109f --- /dev/null +++ b/python/testData/mover/indentedOneLine.py @@ -0,0 +1,5 @@ +def a(): + if True: a = 1 + else: + c = 1 + b = 2 diff --git a/python/testData/mover/indentedOneLine_afterDown.py b/python/testData/mover/indentedOneLine_afterDown.py new file mode 100644 index 000000000000..88aa08262e8f --- /dev/null +++ b/python/testData/mover/indentedOneLine_afterDown.py @@ -0,0 +1,5 @@ +def a(): + if True: a = 1 + else: + b = 2 + c = 1 diff --git a/python/testData/mover/indentedOneLine_afterUp.py b/python/testData/mover/indentedOneLine_afterUp.py new file mode 100644 index 000000000000..c58182c15733 --- /dev/null +++ b/python/testData/mover/indentedOneLine_afterUp.py @@ -0,0 +1,6 @@ +def a(): + if True: + a = 1 + else: + c = 1 + b = 2 diff --git a/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java b/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java index b345b346ef82..fa8d9d0217a6 100644 --- a/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java +++ b/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java @@ -49,6 +49,10 @@ public class PyStatementMoverTest extends PyTestCase { doTest(); } + public void testIndentedOneLine() { //PY-5268 + doTest(); + } + public void testComment() { //PY-5270 doTest(); }