mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PsiDocumentManager: make finishCommitInWriteAction non-cancellable
This commit is contained in:
@@ -12,7 +12,6 @@ import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.application.*;
|
||||
import com.intellij.openapi.application.impl.ApplicationInfoImpl;
|
||||
import com.intellij.openapi.components.ProjectComponent;
|
||||
import com.intellij.openapi.diagnostic.ControlFlowException;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.DocumentRunnable;
|
||||
@@ -25,10 +24,7 @@ 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.EmptyProgressIndicator;
|
||||
import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
import com.intellij.openapi.progress.ProgressIndicator;
|
||||
import com.intellij.openapi.progress.ProgressIndicatorProvider;
|
||||
import com.intellij.openapi.progress.*;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.FileIndexFacade;
|
||||
import com.intellij.openapi.util.*;
|
||||
@@ -366,31 +362,29 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
|
||||
FileViewProvider viewProvider = forceNoPsiCommit ? null : getCachedViewProvider(document);
|
||||
|
||||
myIsCommitInProgress = true;
|
||||
boolean success = true;
|
||||
Ref<Boolean> success = new Ref<>(true);
|
||||
try {
|
||||
if (viewProvider == null) {
|
||||
handleCommitWithoutPsi(document);
|
||||
}
|
||||
else {
|
||||
success = commitToExistingPsi(document, finishProcessors, reparseInjectedProcessors, synchronously, virtualFile, viewProvider);
|
||||
}
|
||||
ProgressManager.getInstance().executeNonCancelableSection(() -> {
|
||||
if (viewProvider == null) {
|
||||
handleCommitWithoutPsi(document);
|
||||
}
|
||||
else {
|
||||
success.set(commitToExistingPsi(document, finishProcessors, reparseInjectedProcessors, synchronously, virtualFile, viewProvider));
|
||||
}
|
||||
});
|
||||
}
|
||||
catch (Throwable e) {
|
||||
//noinspection InstanceofCatchParameter
|
||||
if (!(e instanceof ControlFlowException)) {
|
||||
LOG.error(e);
|
||||
}
|
||||
|
||||
LOG.error(e);
|
||||
forceReload(virtualFile, viewProvider);
|
||||
}
|
||||
finally {
|
||||
if (success) {
|
||||
if (success.get()) {
|
||||
myUncommittedDocuments.remove(document);
|
||||
}
|
||||
myIsCommitInProgress = false;
|
||||
}
|
||||
|
||||
return success;
|
||||
return success.get();
|
||||
}
|
||||
|
||||
private boolean commitToExistingPsi(@NotNull Document document,
|
||||
|
||||
Reference in New Issue
Block a user