Merge branch 'master' into no-reformat-dialog-on-reformat-code-action
[idea/community.git] / platform / lang-impl / src / com / intellij / codeInsight / actions / FormatChangedTextUtil.java
index 3aee7c9f9d21a8d3026b5ad29095491fd7c389e9..1a38026975af9dcc26318067786783dab0d92ef0 100644 (file)
@@ -54,9 +54,11 @@ import org.jetbrains.annotations.Nullable;
 import java.util.*;
 
 public class FormatChangedTextUtil {
 import java.util.*;
 
 public class FormatChangedTextUtil {
+  public static final Key<String> TEST_REVISION_CONTENT = Key.create("test.revision.content");
   private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.actions.FormatChangedTextUtil");
   protected static final Key<List<TextRange>> CHANGED_RANGES = Key.create("changed.ranges.since.last.revision");
 
   private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.actions.FormatChangedTextUtil");
   protected static final Key<List<TextRange>> CHANGED_RANGES = Key.create("changed.ranges.since.last.revision");
 
+
   private FormatChangedTextUtil() {
   }
 
   private FormatChangedTextUtil() {
   }
 
@@ -232,21 +234,18 @@ public class FormatChangedTextUtil {
 
   @NotNull
   public static List<TextRange> getChangedTextRanges(@NotNull Project project, @NotNull PsiFile file) throws FilesTooBigForDiffException {
 
   @NotNull
   public static List<TextRange> getChangedTextRanges(@NotNull Project project, @NotNull PsiFile file) throws FilesTooBigForDiffException {
-    if (ApplicationManager.getApplication().isUnitTestMode()) {
-      List<TextRange> testData = file.getUserData(CHANGED_RANGES);
-      if (testData != null) {
-        return testData;
-      }
-    }
-
-    Document document = PsiDocumentManager.getInstance(project).getDocument(file);
-    if (document == null) return ContainerUtil.emptyList();
-
-    List<TextRange> cachedChangedLines = getCachedChangedLines(project, document);
+    List<TextRange> cachedChangedLines = getCachedChangedLines(project, file);
     if (cachedChangedLines != null) {
       return cachedChangedLines;
     }
 
     if (cachedChangedLines != null) {
       return cachedChangedLines;
     }
 
+    if (ApplicationManager.getApplication().isUnitTestMode()) {
+      String testContent = file.getUserData(TEST_REVISION_CONTENT);
+      if (testContent != null) {
+        return calculateChangedTextRanges(file.getProject(), file, testContent);
+      }
+    }
+
     Change change = ChangeListManager.getInstance(project).getChange(file.getVirtualFile());
     if (change == null) {
       return ContainerUtilRt.emptyList();
     Change change = ChangeListManager.getInstance(project).getChange(file.getVirtualFile());
     if (change == null) {
       return ContainerUtilRt.emptyList();