use transactions in async document commit

This commit is contained in:
peter
2016-03-15 13:18:13 +01:00
parent ac7316e2a8
commit 0cd34a9b5d
2 changed files with 10 additions and 15 deletions
@@ -419,7 +419,13 @@ public class DocumentCommitThread implements Runnable, Disposable, DocumentCommi
if (success) {
assert !myApplication.isDispatchThread();
myApplication.invokeLater(finishRunnable, task.myCreationModalityState);
final Runnable finalFinishRunnable = finishRunnable;
myApplication.invokeLater(new Runnable() {
@Override
public void run() {
TransactionGuard.getInstance().submitMergeableTransaction(TransactionKind.TEXT_EDITING, finalFinishRunnable);
}
}, task.myCreationModalityState);
}
}
catch (ProcessCanceledException e) {
@@ -20,9 +20,7 @@ import com.google.common.annotations.VisibleForTesting;
import com.intellij.injected.editor.DocumentWindow;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.Application;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.application.*;
import com.intellij.openapi.application.impl.ApplicationInfoImpl;
import com.intellij.openapi.components.ProjectComponent;
import com.intellij.openapi.diagnostic.Logger;
@@ -38,8 +36,6 @@ import com.intellij.openapi.editor.impl.EditorDocumentPriorities;
import com.intellij.openapi.editor.impl.FrozenDocument;
import com.intellij.openapi.editor.impl.event.RetargetRangeMarkers;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.FileIndexFacade;
import com.intellij.openapi.util.*;
@@ -476,21 +472,14 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
else {
s1.down();
s2.down();
final Runnable commitRunnable = new Runnable() {
TransactionGuard.getInstance().submitMergeableTransaction(TransactionKind.TEXT_EDITING, new Runnable() {
@Override
public void run() {
commitAllDocuments();
s1.up();
s2.waitFor();
}
};
final ProgressIndicator progressIndicator = ProgressManager.getInstance().getProgressIndicator();
if (progressIndicator == null) {
ApplicationManager.getApplication().invokeLater(commitRunnable);
}
else {
ApplicationManager.getApplication().invokeLater(commitRunnable, progressIndicator.getModalityState());
}
});
}
}
}