Rearranger: commit document before processing (IDEA-144637)
authorYaroslav Lepenkin <yaroslav.lepenkin@jetbrains.com>
Fri, 4 Sep 2015 11:45:03 +0000 (14:45 +0300)
committerYaroslav Lepenkin <yaroslav.lepenkin@jetbrains.com>
Fri, 4 Sep 2015 12:03:46 +0000 (15:03 +0300)
java/java-tests/testData/actions/reformatFileInEditor/reformatRearrange_NotBreaksCode_WhenCaretOnEmptyLine_after.java [new file with mode: 0644]
java/java-tests/testData/actions/reformatFileInEditor/reformatRearrange_NotBreaksCode_WhenCaretOnEmptyLine_before.java [new file with mode: 0644]
java/java-tests/testSrc/com/intellij/codeInsight/actions/ReformatCodeActionInEditorTest.java
platform/lang-impl/src/com/intellij/codeInsight/actions/RearrangeCodeProcessor.java

diff --git a/java/java-tests/testData/actions/reformatFileInEditor/reformatRearrange_NotBreaksCode_WhenCaretOnEmptyLine_after.java b/java/java-tests/testData/actions/reformatFileInEditor/reformatRearrange_NotBreaksCode_WhenCaretOnEmptyLine_after.java
new file mode 100644 (file)
index 0000000..a57a3ee
--- /dev/null
@@ -0,0 +1,7 @@
+public class TestClass {
+    public static void main() {
+    }
+  
+    static class InnerClass {
+    }
+}
diff --git a/java/java-tests/testData/actions/reformatFileInEditor/reformatRearrange_NotBreaksCode_WhenCaretOnEmptyLine_before.java b/java/java-tests/testData/actions/reformatFileInEditor/reformatRearrange_NotBreaksCode_WhenCaretOnEmptyLine_before.java
new file mode 100644 (file)
index 0000000..7042f91
--- /dev/null
@@ -0,0 +1,8 @@
+public class TestClass {
+  static class InnerClass {
+  }
+  <caret>
+
+  public static void main() {
+  }
+}
index 578ba79bad81b6eff1a9c0d2715527b3f51d46e7..4ba5471b93a05adc6afc39bc71a03eca07a9a8b7 100644 (file)
@@ -102,6 +102,10 @@ public class ReformatCodeActionInEditorTest extends LightPlatformCodeInsightFixt
   public void testFormatOptimizeRearrangeVcsChanges() {
     doTest(new ReformatCodeRunOptions(VCS_CHANGED_TEXT).setOptimizeImports(true).setRearrangeCode(true));
   }
+  
+  public void testReformatRearrange_NotBreaksCode_WhenCaretOnEmptyLine() {
+    doTest(new ReformatCodeRunOptions(WHOLE_FILE).setRearrangeCode(true));
+  }
 
   public void testFormatSelection_DoNotTouchTrailingWhiteSpaces() {
     //todo actually test is not working, and working test is not working
index 1ef6662d31bb67999b8d60343fde3c9464002bb8..a81322aeed94c7efe5c4230ed00e976b7452ab74 100644 (file)
@@ -80,8 +80,9 @@ public class RearrangeCodeProcessor extends AbstractLayoutCodeProcessor {
           Document document = PsiDocumentManager.getInstance(myProject).getDocument(file);
 
           if (document != null && Rearranger.EXTENSION.forLanguage(file.getLanguage()) != null) {
-            Runnable command = prepareRearrangeCommand(file, ranges);
             PsiDocumentManager.getInstance(myProject).doPostponedOperationsAndUnblockDocument(document);
+            PsiDocumentManager.getInstance(myProject).commitDocument(document);
+            Runnable command = prepareRearrangeCommand(file, ranges);
             try {
               CommandProcessor.getInstance().executeCommand(myProject, command, COMMAND_NAME, null);
             }