From ab0df25b01bf1baf8485c00e1960f17298042da0 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Thu, 22 Mar 2012 15:17:11 +0400 Subject: [PATCH] fixed PY-5269 Move statement: inconsistent moving of continue and break statement within nested loops --- .../editorActions/moveUpDown/StatementMover.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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 508397082a83..0ce7fbb26125 100644 --- a/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java +++ b/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java @@ -78,13 +78,18 @@ public class StatementMover extends LineMover { } if ( myStatementToMove instanceof PyBreakStatement || myStatementToMove instanceof PyContinueStatement) { + //info.toMove2 = info.toMove; + //return true; PyLoopStatement parent = PsiTreeUtil.getParentOfType(myStatementToMove, PyLoopStatement.class); if (parent != null) { PyStatementPart part = PsiTreeUtil.getChildOfType(parent, PyStatementPart.class); if (part != null && part.getStatementList() != null) { PyStatementList statementList = part.getStatementList(); + if (myStatementToMove.getParent() instanceof PyStatementList) { + statementList = (PyStatementList)myStatementToMove.getParent(); + } if (statementList != null && statementList.getStatements().length > 0) { - if ((statementList.getStatements()[0] == myStatementToMove && !down) + if ((statementList.getStatements()[0] == myStatementToMove /*&& !down*/) || (statementList.getStatements()[statementList.getStatements().length-1] == myStatementToMove && down)) { info.toMove2 = info.toMove; return true; @@ -415,7 +420,8 @@ public class StatementMover extends LineMover { CodeStyleSettings.IndentOptions indentOptions = CodeStyleSettingsManager.getInstance(editor.getProject()). getCurrentSettings().getIndentOptions(PythonFileType.INSTANCE); - PsiElement whiteSpace = myStatementToAddLinebreak.getContainingFile().findElementAt(editor.getDocument().getLineStartOffset(line)); + PsiElement whiteSpace = myStatementToAddLinebreak.getContainingFile().findElementAt( + editor.getDocument().getLineStartOffset(line)); String indent = StringUtil.repeatSymbol(' ', indentOptions.INDENT_SIZE); PyStatementWithElse statementWithElse = PsiTreeUtil.getParentOfType(myStatementToAddLinebreak, PyStatementWithElse.class);