From 9376c69e6fbd19a9ad53104d6d70e77fdfe0c48a Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Wed, 18 Dec 2013 17:49:42 +0400 Subject: [PATCH] fixed PY-11654 Move Statement: IOE at com.intellij.openapi.editor.impl.DocumentImpl.d --- .../moveUpDown/PyStatementMover.java | 22 +++---------------- python/testData/mover/innerIf.py | 2 +- python/testData/mover/innerIf_afterUp.py | 2 +- python/testData/mover/multiCompound.py | 2 +- .../testData/mover/multiCompound_afterUp.py | 2 +- python/testData/mover/multiLineSelection10.py | 2 +- .../mover/multiLineSelection10_afterUp.py | 2 +- python/testData/mover/nestedBlock.py | 2 +- .../testData/mover/oneLineCompoundOutside.py | 2 +- .../mover/oneLineCompoundOutside_afterUp.py | 2 +- python/testData/mover/upInNested.py | 2 +- python/testData/mover/upInNested_afterUp.py | 2 +- 12 files changed, 14 insertions(+), 30 deletions(-) diff --git a/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/PyStatementMover.java b/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/PyStatementMover.java index f4ff47e47bff..17b5f5b4d3e0 100644 --- a/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/PyStatementMover.java +++ b/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/PyStatementMover.java @@ -103,7 +103,7 @@ public class PyStatementMover extends LineMover { final int offset = down ? elementToMove.getTextRange().getEndOffset() : elementToMove.getTextRange().getStartOffset(); int lineNumber = down ? document.getLineNumber(offset) + 1 : document.getLineNumber(offset) - 1; - if (moveOutsideFile(elementToMove, document, lineNumber)) return null; + if (moveOutsideFile(document, lineNumber)) return null; int lineEndOffset = document.getLineEndOffset(lineNumber); final int startOffset = document.getLineStartOffset(lineNumber); lineEndOffset = startOffset != lineEndOffset ? lineEndOffset - 1 : lineEndOffset; @@ -141,24 +141,8 @@ public class PyStatementMover extends LineMover { return new LineRange(startLine, endLine + 1); } - private static boolean moveOutsideFile(@NotNull final PsiElement elementToMove, @NotNull final Document document, int lineNumber) { - if (lineNumber < 0) return true; - if (lineNumber >= document.getLineCount()) { - final int elementOffset = elementToMove.getTextRange().getStartOffset(); - final int lineStartOffset = document.getLineStartOffset(document.getLineNumber(elementOffset)); - final int insertIndex = lineNumber < 0 ? 0 : document.getTextLength(); - if (elementOffset != lineStartOffset) { - ApplicationManager.getApplication().runWriteAction(new Runnable() { - @Override - public void run() { - document.insertString(insertIndex, "\n"); - PsiDocumentManager.getInstance(elementToMove.getProject()).commitAllDocuments(); - } - }); - } - else return true; - } - return false; + private static boolean moveOutsideFile(@NotNull final Document document, int lineNumber) { + return lineNumber < 0 || lineNumber >= document.getLineCount(); } private static boolean moveToEmptyLine(@NotNull final PsiElement elementToMove, boolean down) { diff --git a/python/testData/mover/innerIf.py b/python/testData/mover/innerIf.py index 2faa0c9eaaea..b55e273a290e 100644 --- a/python/testData/mover/innerIf.py +++ b/python/testData/mover/innerIf.py @@ -1,3 +1,3 @@ if value is not None: if not False or value <= 2: - print "here" \ No newline at end of file + print "here" diff --git a/python/testData/mover/innerIf_afterUp.py b/python/testData/mover/innerIf_afterUp.py index 6be6e6c8aba8..3bbbd1a64947 100644 --- a/python/testData/mover/innerIf_afterUp.py +++ b/python/testData/mover/innerIf_afterUp.py @@ -1,4 +1,4 @@ if value is not None: print "here" if not False or value <= 2: - pass \ No newline at end of file + pass diff --git a/python/testData/mover/multiCompound.py b/python/testData/mover/multiCompound.py index e5c86a8112c1..fc9c32e08ed3 100644 --- a/python/testData/mover/multiCompound.py +++ b/python/testData/mover/multiCompound.py @@ -1,3 +1,3 @@ for item in range(1, 3): - b = 2 \ No newline at end of file + b = 2 diff --git a/python/testData/mover/multiCompound_afterUp.py b/python/testData/mover/multiCompound_afterUp.py index c4fd7def4ab4..be4e18f14745 100644 --- a/python/testData/mover/multiCompound_afterUp.py +++ b/python/testData/mover/multiCompound_afterUp.py @@ -1,4 +1,4 @@ b = 2 for item in range(1, 3): - pass \ No newline at end of file + pass diff --git a/python/testData/mover/multiLineSelection10.py b/python/testData/mover/multiLineSelection10.py index 1feb611509ef..b0f261a52221 100644 --- a/python/testData/mover/multiLineSelection10.py +++ b/python/testData/mover/multiLineSelection10.py @@ -1,3 +1,3 @@ if True: a = 2 - b = 3 \ No newline at end of file + b = 3 diff --git a/python/testData/mover/multiLineSelection10_afterUp.py b/python/testData/mover/multiLineSelection10_afterUp.py index c8820eb48b4a..8d273a3fce5c 100644 --- a/python/testData/mover/multiLineSelection10_afterUp.py +++ b/python/testData/mover/multiLineSelection10_afterUp.py @@ -1,4 +1,4 @@ a = 2 b = 3 if True: - pass \ No newline at end of file + pass diff --git a/python/testData/mover/nestedBlock.py b/python/testData/mover/nestedBlock.py index af6006847e81..77ca3c158fc4 100644 --- a/python/testData/mover/nestedBlock.py +++ b/python/testData/mover/nestedBlock.py @@ -4,4 +4,4 @@ def test(a, b=1): else: for n in range(10): - print(b) \ No newline at end of file + print(b) diff --git a/python/testData/mover/oneLineCompoundOutside.py b/python/testData/mover/oneLineCompoundOutside.py index 3f17b74d0fbb..56e31b8e9a2c 100644 --- a/python/testData/mover/oneLineCompoundOutside.py +++ b/python/testData/mover/oneLineCompoundOutside.py @@ -3,4 +3,4 @@ if condition: elif other_condition: if another_one: if True: a = 1 # <- move statement up here - else: b = 2 \ No newline at end of file + else: b = 2 diff --git a/python/testData/mover/oneLineCompoundOutside_afterUp.py b/python/testData/mover/oneLineCompoundOutside_afterUp.py index 21f27987a762..1f871fbc26a9 100644 --- a/python/testData/mover/oneLineCompoundOutside_afterUp.py +++ b/python/testData/mover/oneLineCompoundOutside_afterUp.py @@ -4,4 +4,4 @@ elif other_condition: if True: a = 1 # <- move statement up here else: b = 2 if another_one: - pass \ No newline at end of file + pass diff --git a/python/testData/mover/upInNested.py b/python/testData/mover/upInNested.py index 4e170cc17d02..89cacaf5127e 100644 --- a/python/testData/mover/upInNested.py +++ b/python/testData/mover/upInNested.py @@ -4,4 +4,4 @@ try: except: print(zoo(0).foo(2)) except: - zoo(3) \ No newline at end of file + zoo(3) diff --git a/python/testData/mover/upInNested_afterUp.py b/python/testData/mover/upInNested_afterUp.py index 9b20d8ec3308..cb5ecd8934c0 100644 --- a/python/testData/mover/upInNested_afterUp.py +++ b/python/testData/mover/upInNested_afterUp.py @@ -5,4 +5,4 @@ try: print(zoo(0).foo(2)) zoo(3) except: - pass \ No newline at end of file + pass