From 000308fa6c7071a031dd48af6ea277acb0e7b008 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Thu, 12 Jul 2012 14:06:12 +0400 Subject: [PATCH] fixed PY-6884 Paste changes code logic in case empty line inside indented block --- .../CopyPasteIndentProcessor.java | 38 +++---------------- 1 file changed, 6 insertions(+), 32 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CopyPasteIndentProcessor.java b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CopyPasteIndentProcessor.java index b993d2822fdb..4d170dc03931 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CopyPasteIndentProcessor.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CopyPasteIndentProcessor.java @@ -41,31 +41,20 @@ public class CopyPasteIndentProcessor implements CopyPastePostProcessor= document.getLineStartOffset(selStartLine); offset--) { if (!Character.isWhitespace(document.getCharsSequence().charAt(offset))) { return null; } } - int minIndent = Integer.MAX_VALUE; - int maxIndent = 0; int tabSize = CodeStyleFacade.getInstance(file.getProject()).getTabSize(file.getFileType()); - for (int line = selStartLine; line <= selEndLine; line++) { - int start = document.getLineStartOffset(line); - int end = document.getLineEndOffset(line); - int indent = getIndent(document.getCharsSequence(), start, end, tabSize); - if (indent >= 0) { - minIndent = Math.min(minIndent, indent); - maxIndent = Math.max(minIndent, indent); - } - } + int start = document.getLineStartOffset(selStartLine); + int end = document.getLineEndOffset(selStartLine); + int minIndent = getIndent(document.getCharsSequence(), start, end, tabSize); + int firstNonSpaceChar = CharArrayUtil.shiftForward(document.getCharsSequence(), startOffsets[0], " \t"); int firstLineLeadingSpaces = (firstNonSpaceChar <= document.getLineEndOffset(selStartLine)) ? firstNonSpaceChar - startOffsets[0] : 0; - return new IndentTransferableData(maxIndent - minIndent, maxIndent, firstLineLeadingSpaces); + return new IndentTransferableData(minIndent, 0, firstLineLeadingSpaces); } private static boolean acceptFileType(FileType fileType) { @@ -149,20 +138,6 @@ public class CopyPasteIndentProcessor implements CopyPastePostProcessor currentIndent) - return; - } //insert on top level, doesn't need indent if (caretColumn == 0 && !pastedText.startsWith(" ")) return; @@ -179,8 +154,7 @@ public class CopyPasteIndentProcessor implements CopyPastePostProcessor