mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
refactor [platform]: introduce PsiDocumentManagerEx and remove downcasts to PsiDocumentManagerBase
GitOrigin-RevId: 2870b0fc778ee4d9349dd465db92107abd25dbbd
This commit is contained in:
committed by
intellij-monorepo-bot
parent
44860a567a
commit
853cd06936
@@ -12,6 +12,7 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import com.intellij.testFramework.LightVirtualFileBase;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.PathUtil;
|
||||
@@ -177,6 +178,6 @@ public class GridUtilCore {
|
||||
if (oldFile instanceof LightVirtualFileBase lf) {
|
||||
lf.setValid(false);
|
||||
}
|
||||
((PsiDocumentManagerBase)PsiDocumentManager.getInstance(psiFile.getProject())).associatePsi(document, psiFile);
|
||||
((PsiDocumentManagerEx)PsiDocumentManager.getInstance(psiFile.getProject())).associatePsi(document, psiFile);
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -16,6 +16,7 @@ import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.pom.Navigatable;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import com.intellij.refactoring.extractMethod.ExtractMethodProcessor;
|
||||
import com.intellij.ui.*;
|
||||
import com.intellij.ui.content.Content;
|
||||
@@ -140,7 +141,7 @@ class PreviewPanel extends BorderLayoutPanel implements Disposable, UiDataProvid
|
||||
myUpdateAlarm.cancelAllRequests();
|
||||
myUpdateAlarm.addRequest(() -> {
|
||||
if (myProject.isDisposed()) return;
|
||||
PsiDocumentManagerBase documentManager = (PsiDocumentManagerBase)PsiDocumentManager.getInstance(myProject);
|
||||
PsiDocumentManagerEx documentManager = (PsiDocumentManagerEx)PsiDocumentManager.getInstance(myProject);
|
||||
documentManager.cancelAndRunWhenAllCommitted("ExtractMethodPreview", this::updateImmediately);
|
||||
}, 300);
|
||||
}
|
||||
|
||||
+2
-1
@@ -16,6 +16,7 @@ import com.intellij.psi.*
|
||||
import com.intellij.psi.PsiLanguageInjectionHost.Shred
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx
|
||||
import com.intellij.psi.impl.source.resolve.FileContextUtil
|
||||
import com.intellij.psi.impl.source.tree.injected.changesHandler.*
|
||||
import com.intellij.psi.util.createSmartPointer
|
||||
@@ -31,7 +32,7 @@ internal class JavaInjectedFileChangesHandler(shreds: List<Shred>, editor: Edito
|
||||
myHostDocument.addDocumentListener(object : DocumentListener {
|
||||
override fun documentChanged(event: DocumentEvent) {
|
||||
if (UndoManager.getInstance(myProject).isUndoInProgress) {
|
||||
(PsiDocumentManager.getInstance(myProject) as PsiDocumentManagerBase).addRunOnCommit(myHostDocument) { thisDoc ->
|
||||
(PsiDocumentManager.getInstance(myProject) as PsiDocumentManagerEx).addRunOnCommit(myHostDocument) { thisDoc ->
|
||||
rebuildMarkers(markersWholeRange(markers) ?: failAndReport("can't get marker range in undo", event))
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -8,6 +8,7 @@ import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import com.intellij.testFramework.PlatformTestUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -36,7 +37,7 @@ public class I18nQuickFixTest extends LightQuickFixParameterizedTestCase {
|
||||
protected void tearDown() throws Exception {
|
||||
try {
|
||||
// avoid "memory/disk conflict" when the document for changed annotation.xml stays in memory
|
||||
((PsiDocumentManagerBase)PsiDocumentManager.getInstance(getProject())).clearUncommittedDocuments();
|
||||
((PsiDocumentManagerEx)PsiDocumentManager.getInstance(getProject())).clearUncommittedDocuments();
|
||||
}
|
||||
catch (Throwable e) {
|
||||
addSuppressedException(e);
|
||||
|
||||
@@ -18,6 +18,7 @@ import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiJavaFile;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import com.intellij.psi.impl.search.JavaNullMethodArgumentUtil;
|
||||
import com.intellij.psi.impl.source.PsiFileImpl;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
@@ -39,7 +40,7 @@ public class ConcurrentIndexTest extends JavaCodeInsightFixtureTestCase {
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
((PsiDocumentManagerBase)PsiDocumentManager.getInstance(getProject())).disableBackgroundCommit(getProject());
|
||||
((PsiDocumentManagerEx)PsiDocumentManager.getInstance(getProject())).disableBackgroundCommit(getProject());
|
||||
}
|
||||
|
||||
public void test_concurrent_switching_with_checkCanceled() throws ExecutionException, InterruptedException {
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@ class PsiJavaModuleModificationTrackerTest : LightJavaCodeInsightFixtureTestCase
|
||||
val file = fixture.configureByText("manifest.mf", "${PsiJavaModule.AUTO_MODULE_NAME} = M1\n")
|
||||
doTestIncremented {
|
||||
WriteCommandAction.runWriteCommandAction(fixture.project) {
|
||||
val documentManager = PsiDocumentManagerBase.getInstance(fixture.project)
|
||||
val documentManager = PsiDocumentManager.getInstance(fixture.project)
|
||||
val document = documentManager.getDocument(file)!!
|
||||
document.setText("${PsiJavaModule.AUTO_MODULE_NAME} = M2\n")
|
||||
documentManager.commitDocument(document)
|
||||
|
||||
+3
-2
@@ -23,6 +23,7 @@ import com.intellij.psi.PsiCompiledFile;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import com.intellij.psi.impl.PsiFileEx;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.concurrency.ThreadingAssertions;
|
||||
@@ -60,7 +61,7 @@ public final class TextEditorBackgroundHighlighter implements BackgroundEditorHi
|
||||
return List.of();
|
||||
}
|
||||
|
||||
PsiDocumentManagerBase documentManager = (PsiDocumentManagerBase)PsiDocumentManager.getInstance(project);
|
||||
PsiDocumentManagerEx documentManager = (PsiDocumentManagerEx)PsiDocumentManager.getInstance(project);
|
||||
Document document = editor.getDocument();
|
||||
if (!documentManager.isCommitted(document)) {
|
||||
LOG.error(document + documentManager.someDocumentDebugInfo(document));
|
||||
@@ -134,7 +135,7 @@ public final class TextEditorBackgroundHighlighter implements BackgroundEditorHi
|
||||
public static @Nullable PsiFile getCachedFileToHighlight(@NotNull Project project,
|
||||
@NotNull VirtualFile virtualFile,
|
||||
@NotNull CodeInsightContext context) {
|
||||
PsiDocumentManagerBase psiDocumentManager = (PsiDocumentManagerBase)PsiDocumentManager.getInstance(project);
|
||||
PsiDocumentManagerEx psiDocumentManager = (PsiDocumentManagerEx)PsiDocumentManager.getInstance(project);
|
||||
PsiFile psiFile = psiDocumentManager.getRawCachedFile(virtualFile, context);
|
||||
if (psiFile instanceof PsiCompiledFile compiled) {
|
||||
psiFile = (PsiFile)compiled.getCachedMirror();
|
||||
|
||||
+2
-1
@@ -25,6 +25,7 @@ import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import com.intellij.psi.impl.source.resolve.FileContextUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
@@ -422,7 +423,7 @@ public final class InjectedLanguageManagerImpl extends InjectedLanguageManager i
|
||||
public @NotNull DocumentWindow freezeWindow(@NotNull DocumentWindow document) {
|
||||
Place shreds = ((DocumentWindowImpl)document).getShreds();
|
||||
Project project = shreds.getHostPointer().getProject();
|
||||
DocumentEx delegate = ((PsiDocumentManagerBase)PsiDocumentManager.getInstance(project)).getLastCommittedDocument(document.getDelegate());
|
||||
DocumentEx delegate = ((PsiDocumentManagerEx)PsiDocumentManager.getInstance(project)).getLastCommittedDocument(document.getDelegate());
|
||||
Place place = new Place(ContainerUtil.map(shreds, shred -> ((ShredImpl)shred).withPsiRange()));
|
||||
return new DocumentWindowImpl(delegate, place);
|
||||
}
|
||||
|
||||
+1
-1
@@ -336,7 +336,7 @@ public final class InjectedLanguageUtil extends InjectedLanguageUtilBase {
|
||||
@NotNull ProgressIndicator indicator,
|
||||
@NotNull ASTNode oldRoot,
|
||||
@NotNull ASTNode newRoot,
|
||||
@NotNull PsiDocumentManagerBase documentManager) {
|
||||
@NotNull PsiDocumentManager documentManager) {
|
||||
Language language = injectedPsiFile.getLanguage();
|
||||
InjectedFileViewProvider provider = (InjectedFileViewProvider)injectedPsiFile.getViewProvider();
|
||||
VirtualFile oldInjectedVFile = provider.getVirtualFile();
|
||||
|
||||
+9
-8
@@ -52,7 +52,7 @@ import java.util.*;
|
||||
|
||||
@ApiStatus.Internal
|
||||
public final class InjectionRegistrarImpl implements MultiHostRegistrar {
|
||||
private final PsiDocumentManagerBase myDocumentManagerBase;
|
||||
private final PsiDocumentManagerEx myDocumentManagerBase;
|
||||
private List<PsiFile> resultFiles;
|
||||
private List<Pair<ReferenceInjector, Place>> resultReferences;
|
||||
private Language myLanguage;
|
||||
@@ -78,7 +78,7 @@ public final class InjectionRegistrarImpl implements MultiHostRegistrar {
|
||||
FileViewProvider viewProvider = myHostPsiFile.getViewProvider();
|
||||
if (viewProvider instanceof InjectedFileViewProvider) throw new IllegalArgumentException(viewProvider +" must not be injected");
|
||||
myHostVirtualFile = viewProvider.getVirtualFile();
|
||||
myDocumentManagerBase = (PsiDocumentManagerBase)docManager;
|
||||
myDocumentManagerBase = (PsiDocumentManagerEx)docManager;
|
||||
myHostDocument = (DocumentEx)viewProvider.getDocument();
|
||||
}
|
||||
|
||||
@@ -245,7 +245,7 @@ public final class InjectionRegistrarImpl implements MultiHostRegistrar {
|
||||
@NotNull PsiFile hostPsiFile,
|
||||
@NotNull VirtualFile hostVirtualFile,
|
||||
@NotNull DocumentEx hostDocument,
|
||||
@NotNull PsiDocumentManagerBase documentManager) {
|
||||
@NotNull PsiDocumentManagerEx documentManager) {
|
||||
boolean isAncestor = false;
|
||||
for (PlaceInfo info : placeInfos) {
|
||||
isAncestor |= PsiTreeUtil.isAncestor(contextElement, info.host, false);
|
||||
@@ -294,7 +294,7 @@ public final class InjectionRegistrarImpl implements MultiHostRegistrar {
|
||||
}
|
||||
|
||||
private static @NotNull PsiFile createOrMergeInjectedFile(@NotNull PsiFile hostPsiFile,
|
||||
@NotNull PsiDocumentManagerBase documentManager,
|
||||
@NotNull PsiDocumentManagerEx documentManager,
|
||||
@NotNull Place place,
|
||||
@NotNull DocumentWindowImpl documentWindow,
|
||||
@NotNull PsiFile injectedPsiFile,
|
||||
@@ -409,7 +409,8 @@ public final class InjectionRegistrarImpl implements MultiHostRegistrar {
|
||||
@NotNull PsiFile hostPsiFile,
|
||||
@NotNull VirtualFile hostVirtualFile,
|
||||
@NotNull DocumentEx hostDocument,
|
||||
@NotNull List<PlaceInfo> placeInfos, @NotNull PsiDocumentManagerBase documentManager) {
|
||||
@NotNull List<PlaceInfo> placeInfos,
|
||||
@NotNull PsiDocumentManager documentManager) {
|
||||
return msg + ".\n" +
|
||||
"OK let's see. Host file: " + hostPsiFile + " in '" + hostVirtualFile.getPresentableUrl() + "' (" + hostPsiFile.getLanguage()+") " +
|
||||
(documentManager.isUncommited(hostDocument) ? " (uncommitted)" : "") + "\n" +
|
||||
@@ -433,7 +434,7 @@ public final class InjectionRegistrarImpl implements MultiHostRegistrar {
|
||||
return node;
|
||||
}
|
||||
|
||||
private static void assertEverythingIsAllright(@NotNull PsiDocumentManagerBase documentManager,
|
||||
private static void assertEverythingIsAllright(@NotNull PsiDocumentManagerEx documentManager,
|
||||
@NotNull DocumentWindowImpl documentWindow,
|
||||
@NotNull PsiFile psiFile) {
|
||||
InjectedFileViewProvider injectedFileViewProvider = (InjectedFileViewProvider)psiFile.getViewProvider();
|
||||
@@ -572,7 +573,7 @@ public final class InjectionRegistrarImpl implements MultiHostRegistrar {
|
||||
@NotNull ProgressIndicator indicator,
|
||||
@NotNull ASTNode oldRoot,
|
||||
@NotNull ASTNode newRoot,
|
||||
@NotNull PsiDocumentManagerBase documentManager) {
|
||||
@NotNull PsiDocumentManager documentManager) {
|
||||
Project project = hostPsiFile.getProject();
|
||||
String newText = oldDocumentWindow.getText();
|
||||
FileASTNode oldNode = oldInjectedPsi.getNode();
|
||||
@@ -683,7 +684,7 @@ public final class InjectionRegistrarImpl implements MultiHostRegistrar {
|
||||
@NotNull CharSequence documentText,
|
||||
@NotNull List<PlaceInfo> placeInfos,
|
||||
@NotNull StringBuilder decodedChars,
|
||||
@NotNull String fileName, @NotNull PsiDocumentManagerBase documentManager) {
|
||||
@NotNull String fileName, @NotNull PsiDocumentManager documentManager) {
|
||||
VirtualFileWindowImpl virtualFile = new VirtualFileWindowImpl(fileName, hostVirtualFile, documentWindow, language, decodedChars);
|
||||
Language finalLanguage = forcedLanguage == null ? LanguageSubstitutors.getInstance().substituteLanguage(language, virtualFile, project) : forcedLanguage;
|
||||
InjectedFileViewProvider viewProvider = InjectedFileViewProvider.create(PsiManagerEx.getInstanceEx(project), virtualFile, documentWindow, finalLanguage);
|
||||
|
||||
+2
-1
@@ -16,6 +16,7 @@ import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettings;
|
||||
import com.intellij.psi.impl.DebugUtil;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import com.intellij.psi.impl.PsiToDocumentSynchronizer;
|
||||
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtilBase;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -62,7 +63,7 @@ public final class FormattingDocumentModelImpl implements FormattingDocumentMode
|
||||
final Document document = PsiDocumentManager.getInstance(project).getDocument(psiFile);
|
||||
if (document != null) {
|
||||
if (PsiDocumentManager.getInstance(project).isUncommited(document)) return null;
|
||||
PsiToDocumentSynchronizer synchronizer = ((PsiDocumentManagerBase)PsiDocumentManager.getInstance(project)).getSynchronizer();
|
||||
PsiToDocumentSynchronizer synchronizer = ((PsiDocumentManagerEx)PsiDocumentManager.getInstance(project)).getSynchronizer();
|
||||
if (synchronizer.isDocumentAffectedByTransactions(document)) return null;
|
||||
}
|
||||
return document;
|
||||
|
||||
+2
-1
@@ -35,6 +35,7 @@ import com.intellij.pom.tree.events.impl.TreeChangeImpl;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import com.intellij.psi.impl.PsiManagerEx;
|
||||
import com.intellij.psi.impl.file.impl.FileManager;
|
||||
import com.intellij.psi.impl.source.codeStyle.CodeEditUtil;
|
||||
@@ -443,7 +444,7 @@ public final class PostprocessReformattingAspectImpl extends PostprocessReformat
|
||||
|
||||
for (PsiFile file : viewProvider.getAllFiles()) {
|
||||
if (file.getUserData(REPARSE_PENDING) != null || rootsToReparse.contains(file)) {
|
||||
((PsiDocumentManagerBase)PsiDocumentManager.getInstance(myProject)).reparseFileFromText((PsiFileImpl)file);
|
||||
((PsiDocumentManagerEx)PsiDocumentManager.getInstance(myProject)).reparseFileFromText((PsiFileImpl)file);
|
||||
file.putUserData(REPARSE_PENDING, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,9 +77,9 @@ a:com.intellij.openapi.fileEditor.impl.FileDocumentManagerBase
|
||||
- getLanguage():com.intellij.lang.Language
|
||||
- getReferences():com.intellij.psi.PsiReference[]
|
||||
a:com.intellij.psi.impl.PsiDocumentManagerBase
|
||||
- com.intellij.psi.PsiDocumentManager
|
||||
- com.intellij.openapi.Disposable
|
||||
- com.intellij.openapi.editor.event.DocumentListener
|
||||
- com.intellij.psi.PsiDocumentManager
|
||||
- *:getPsiFile(com.intellij.openapi.editor.Document,com.intellij.codeInsight.multiverse.CodeInsightContext):com.intellij.psi.PsiFile
|
||||
*:com.intellij.psi.impl.PsiDocumentTransactionListenerBackgroundable
|
||||
- com.intellij.psi.impl.PsiDocumentTransactionListener
|
||||
|
||||
@@ -1890,23 +1890,20 @@ f:com.intellij.psi.impl.PsiCachedValueImpl$SoftTracked
|
||||
- com.intellij.psi.util.CachedValue
|
||||
- <init>(com.intellij.psi.PsiManager,com.intellij.psi.util.CachedValueProvider):V
|
||||
a:com.intellij.psi.impl.PsiDocumentManagerBase
|
||||
- com.intellij.psi.PsiDocumentManager
|
||||
- com.intellij.openapi.Disposable
|
||||
- com.intellij.openapi.editor.event.DocumentListener
|
||||
- com.intellij.psi.PsiDocumentManager
|
||||
- p:<init>(com.intellij.openapi.project.Project):V
|
||||
- associatePsi(com.intellij.openapi.editor.Document,com.intellij.psi.PsiFile):V
|
||||
- beforeDocumentChange(com.intellij.openapi.editor.event.DocumentEvent):V
|
||||
- p:beforeDocumentChangeOnUnlockedDocument(com.intellij.psi.FileViewProvider):V
|
||||
- bulkUpdateFinished(com.intellij.openapi.editor.Document):V
|
||||
- bulkUpdateStarting(com.intellij.openapi.editor.Document):V
|
||||
- cancelAndRunWhenAllCommitted(java.lang.Object,java.lang.Runnable):Z
|
||||
- s:checkConsistency(com.intellij.psi.PsiFile,com.intellij.openapi.editor.Document):Z
|
||||
- commitAllDocuments():V
|
||||
- commitAllDocumentsUnderProgress():Z
|
||||
- commitAndRunReadAction(com.intellij.openapi.util.Computable):java.lang.Object
|
||||
- commitAndRunReadAction(java.lang.Runnable):V
|
||||
- commitDocument(com.intellij.openapi.editor.Document):V
|
||||
- disableBackgroundCommit(com.intellij.openapi.Disposable):V
|
||||
- dispose():V
|
||||
- doPostponedOperationsAndUnblockDocument(com.intellij.openapi.editor.Document):V
|
||||
- documentChanged(com.intellij.openapi.editor.event.DocumentEvent):V
|
||||
@@ -1915,8 +1912,6 @@ a:com.intellij.psi.impl.PsiDocumentManagerBase
|
||||
- getCachedDocument(com.intellij.psi.PsiFile):com.intellij.openapi.editor.Document
|
||||
- f:getCachedPsiFile(com.intellij.openapi.editor.Document):com.intellij.psi.PsiFile
|
||||
- getDocument(com.intellij.psi.PsiFile):com.intellij.openapi.editor.Document
|
||||
- getEventsSinceCommit(com.intellij.openapi.editor.Document):java.util.List
|
||||
- getLastCommittedDocument(com.intellij.openapi.editor.Document):com.intellij.openapi.editor.ex.DocumentEx
|
||||
- getLastCommittedDocument(com.intellij.psi.PsiFile):com.intellij.openapi.editor.Document
|
||||
- getLastCommittedStamp(com.intellij.openapi.editor.Document):J
|
||||
- getLastCommittedText(com.intellij.openapi.editor.Document):java.lang.CharSequence
|
||||
@@ -1928,14 +1923,12 @@ a:com.intellij.psi.impl.PsiDocumentManagerBase
|
||||
- hasUncommitedDocuments():Z
|
||||
- isCommitInProgress():Z
|
||||
- isCommitted(com.intellij.openapi.editor.Document):Z
|
||||
- isDefaultProject():Z
|
||||
- isDocumentBlockedByPsi(com.intellij.openapi.editor.Document):Z
|
||||
- isUncommited(com.intellij.openapi.editor.Document):Z
|
||||
- performForCommittedDocument(com.intellij.openapi.editor.Document,java.lang.Runnable):V
|
||||
- performLaterWhenAllCommitted(com.intellij.openapi.application.ModalityState,java.lang.Runnable):V
|
||||
- performLaterWhenAllCommitted(java.lang.Runnable):V
|
||||
- performWhenAllCommitted(java.lang.Runnable):Z
|
||||
- reparseFileFromText(com.intellij.psi.impl.source.PsiFileImpl):V
|
||||
- reparseFiles(java.util.Collection,Z):V
|
||||
- someDocumentDebugInfo(com.intellij.openapi.editor.Document):java.lang.String
|
||||
a:com.intellij.psi.impl.PsiElementBase
|
||||
|
||||
@@ -6,7 +6,7 @@ import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.impl.DocumentCommitProcessor;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
final class MockDocumentCommitProcessor implements DocumentCommitProcessor {
|
||||
@@ -16,7 +16,7 @@ final class MockDocumentCommitProcessor implements DocumentCommitProcessor {
|
||||
|
||||
@Override
|
||||
public void commitAsynchronously(@NotNull Project project,
|
||||
@NotNull PsiDocumentManagerBase documentManager,
|
||||
@NotNull PsiDocumentManagerEx documentManager,
|
||||
@NotNull Document document,
|
||||
@NotNull Object reason,
|
||||
@NotNull ModalityState modality) {
|
||||
|
||||
@@ -178,7 +178,7 @@ public class PomModelImpl extends UserDataHolderBase implements PomModel {
|
||||
}
|
||||
|
||||
private void commitTransaction(@NotNull PsiFile containingFileByTree, @Nullable Document document) {
|
||||
final PsiDocumentManagerBase manager = (PsiDocumentManagerBase)PsiDocumentManager.getInstance(myProject);
|
||||
final PsiDocumentManagerEx manager = (PsiDocumentManagerEx)PsiDocumentManager.getInstance(myProject);
|
||||
final PsiToDocumentSynchronizer synchronizer = manager.getSynchronizer();
|
||||
|
||||
boolean isFromCommit = manager.isCommitInProgress();
|
||||
@@ -255,7 +255,7 @@ public class PomModelImpl extends UserDataHolderBase implements PomModel {
|
||||
|
||||
@Contract("_,null -> null")
|
||||
private @Nullable Document startTransaction(@NotNull PomTransaction transaction, @Nullable PsiFile psiFile) {
|
||||
final PsiDocumentManagerBase manager = (PsiDocumentManagerBase)PsiDocumentManager.getInstance(myProject);
|
||||
final PsiDocumentManagerEx manager = (PsiDocumentManagerEx)PsiDocumentManager.getInstance(myProject);
|
||||
final PsiToDocumentSynchronizer synchronizer = manager.getSynchronizer();
|
||||
final PsiElement changeScope = transaction.getChangeScope();
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.intellij.pom.tree.events.impl.TreeChangeEventImpl;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import com.intellij.psi.impl.PsiManagerEx;
|
||||
import com.intellij.psi.impl.PsiManagerImpl;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -27,7 +28,7 @@ public final class PsiEventWrapperAspect implements PomModelAspect {
|
||||
|
||||
PsiFile file = (PsiFile)changeSet.getRootElement().getPsi();
|
||||
|
||||
((PsiDocumentManagerBase)PsiDocumentManager.getInstance(file.getProject())).getSynchronizer().processEvents(changeSet, file);
|
||||
((PsiDocumentManagerEx)PsiDocumentManager.getInstance(file.getProject())).getSynchronizer().processEvents(changeSet, file);
|
||||
|
||||
if (PomModelImpl.shouldFirePhysicalPsiEvents(file)) {
|
||||
PsiManagerImpl.runWriteActionOnEdtRegardlessOfCurrentThread(() -> changeSet.fireEvents());
|
||||
|
||||
@@ -337,7 +337,7 @@ public abstract class AbstractFileViewProvider extends UserDataHolderBase implem
|
||||
return;
|
||||
}
|
||||
if (document != null &&
|
||||
((PsiDocumentManagerBase)PsiDocumentManager.getInstance(myManager.getProject())).getSynchronizer().isInSynchronization(document)) {
|
||||
((PsiDocumentManagerEx)PsiDocumentManager.getInstance(myManager.getProject())).getSynchronizer().isInSynchronization(document)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.intellij.openapi.vfs.VirtualFileUtil;
|
||||
import com.intellij.openapi.vfs.limits.FileSizeLimit;
|
||||
import com.intellij.psi.impl.DebugUtil;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import com.intellij.psi.impl.PsiFileEx;
|
||||
import com.intellij.psi.impl.source.PsiFileImpl;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
@@ -65,8 +66,8 @@ public class SingleRootFileViewProvider extends AbstractFileViewProvider impleme
|
||||
super(manager, virtualFile, eventSystemEnabled);
|
||||
myBaseLanguage = language;
|
||||
PsiDocumentManager documentManager = PsiDocumentManager.getInstance(manager.getProject());
|
||||
if (documentManager instanceof PsiDocumentManagerBase) {
|
||||
((PsiDocumentManagerBase)documentManager).assertFileIsFromCorrectProject(virtualFile);
|
||||
if (documentManager instanceof PsiDocumentManagerEx) {
|
||||
((PsiDocumentManagerEx)documentManager).assertFileIsFromCorrectProject(virtualFile);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -81,8 +81,7 @@ public final class ChangedPsiRangeUtil {
|
||||
if (!file.getViewProvider().supportsIncrementalReparse(file.getLanguage())) {
|
||||
return new ProperTextRange(0, psiLength);
|
||||
}
|
||||
List<DocumentEvent> events = ((PsiDocumentManagerBase)PsiDocumentManager.getInstance(file.getProject())).getEventsSinceCommit(
|
||||
document);
|
||||
List<DocumentEvent> events = ((PsiDocumentManagerEx)PsiDocumentManager.getInstance(file.getProject())).getEventsSinceCommit(document);
|
||||
int prefix = Integer.MAX_VALUE;
|
||||
int suffix = Integer.MAX_VALUE;
|
||||
int lengthBeforeEvent = psiLength;
|
||||
|
||||
@@ -252,7 +252,7 @@ public class DiffLog implements DiffTreeChangeBuilder<ASTNode,ASTNode> {
|
||||
viewProvider.beforeContentsSynchronized();
|
||||
|
||||
Document document = viewProvider.getDocument();
|
||||
PsiDocumentManagerBase documentManager = (PsiDocumentManagerBase)PsiDocumentManager.getInstance(file.getProject());
|
||||
PsiDocumentManagerEx documentManager = (PsiDocumentManagerEx)PsiDocumentManager.getInstance(file.getProject());
|
||||
PsiToDocumentSynchronizer.DocumentChangeTransaction transaction = documentManager.getSynchronizer().getTransaction(document);
|
||||
|
||||
if (transaction == null) {
|
||||
|
||||
@@ -14,7 +14,7 @@ public interface DocumentCommitProcessor {
|
||||
void commitSynchronously(@NotNull Document document, @NotNull Project project, @NotNull PsiFile psiFile);
|
||||
|
||||
void commitAsynchronously(@NotNull Project project,
|
||||
@NotNull PsiDocumentManagerBase documentManager,
|
||||
@NotNull PsiDocumentManagerEx documentManager,
|
||||
@NotNull Document document,
|
||||
@NonNls @NotNull Object reason,
|
||||
@NotNull ModalityState modality);
|
||||
|
||||
@@ -51,7 +51,6 @@ import com.intellij.util.concurrency.ThreadingAssertions;
|
||||
import com.intellij.util.concurrency.annotations.RequiresEdt;
|
||||
import com.intellij.util.containers.CollectionFactory;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.EdtInvocationManager;
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
import java.util.*;
|
||||
@@ -60,7 +59,7 @@ import java.util.concurrent.ConcurrentMap;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public abstract class PsiDocumentManagerBase extends PsiDocumentManager implements DocumentListener, Disposable {
|
||||
public abstract class PsiDocumentManagerBase extends PsiDocumentManagerEx implements DocumentListener, Disposable {
|
||||
private static final Logger LOG = Logger.getInstance(PsiDocumentManagerBase.class);
|
||||
private static final Key<Document> HARD_REF_TO_DOCUMENT = Key.create("HARD_REFERENCE_TO_DOCUMENT");
|
||||
|
||||
@@ -141,6 +140,14 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
|
||||
return psiFile;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ApiStatus.Internal
|
||||
public @NotNull Project getProject() {
|
||||
return myProject;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ApiStatus.Internal
|
||||
public void associatePsi(@NotNull Document document, @NotNull PsiFile file) {
|
||||
if (file.getProject() != myProject) {
|
||||
throw new IllegalArgumentException("Method associatePsi() called with file from the wrong project. Expected: "+myProject+" but got: "+file.getProject());
|
||||
@@ -171,12 +178,14 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
|
||||
* It's guaranteed to not perform any expensive ops like creating files/reparse/resurrecting PsiFile from temp comatose state.
|
||||
*/
|
||||
@ApiStatus.Internal
|
||||
@Override
|
||||
public final @Nullable PsiFile getRawCachedFile(@NotNull VirtualFile virtualFile, @NotNull CodeInsightContext context) {
|
||||
FileManagerEx manager = ((FileManagerEx)getFileManager());
|
||||
return manager.getRawCachedFile(virtualFile, context);
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
@Override
|
||||
public final @NotNull @Unmodifiable List<FileViewProvider> getCachedViewProviders(@NotNull Document document) {
|
||||
VirtualFile virtualFile = getVirtualFile(document);
|
||||
if (virtualFile == null) return Collections.emptyList();
|
||||
@@ -339,6 +348,8 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
|
||||
* The action will be executed in EDT.
|
||||
* @return true if action has been run immediately, or false if action was scheduled for execution later.
|
||||
*/
|
||||
@Override
|
||||
@ApiStatus.Internal
|
||||
public boolean cancelAndRunWhenAllCommitted(@NonNls @NotNull Object key, @NotNull Runnable action) {
|
||||
ThreadingAssertions.assertEventDispatchThread();
|
||||
if (myProject.isDisposed()) {
|
||||
@@ -379,6 +390,7 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
|
||||
* {@code addRunOnCommit(document, d->d.getText())}
|
||||
*/
|
||||
@ApiStatus.Internal
|
||||
@Override
|
||||
public void addRunOnCommit(@NotNull Document document, @NotNull Consumer<? super @NotNull Document> action) {
|
||||
List<Consumer<? super Document>> actions = documentCommitActions.computeIfAbsent(document, __ -> ContainerUtil.createConcurrentList());
|
||||
actions.add(ThreadContext.captureThreadContext(action));
|
||||
@@ -423,6 +435,7 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
@Override
|
||||
public boolean isEventSystemEnabled(@NotNull Document document) {
|
||||
return ReadAction.compute(() -> {
|
||||
List<FileViewProvider> viewProviders = getCachedViewProviders(document);
|
||||
@@ -431,6 +444,7 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
@Override
|
||||
public boolean finishCommit(@NotNull Document document,
|
||||
@NotNull @Unmodifiable List<? extends BooleanRunnable> finishProcessors,
|
||||
@NotNull @Unmodifiable List<? extends BooleanRunnable> reparseInjectedProcessors,
|
||||
@@ -535,6 +549,7 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
@Override
|
||||
public void forceReload(@Nullable VirtualFile virtualFile, @NotNull @Unmodifiable List<? extends FileViewProvider> viewProviders) {
|
||||
if (!viewProviders.isEmpty()) {
|
||||
DebugUtil.performPsiModification("psi.forceReload", () -> {
|
||||
@@ -596,6 +611,7 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
|
||||
}
|
||||
|
||||
// true if the PSI is being modified and events being sent
|
||||
@Override
|
||||
public boolean isCommitInProgress() {
|
||||
return myIsCommitInProgress.get() != null || isFullReparseInProgress();
|
||||
}
|
||||
@@ -893,6 +909,8 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
|
||||
return document == null ? null : getLastCommittedDocument(document);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ApiStatus.Internal
|
||||
public @NotNull DocumentEx getLastCommittedDocument(@NotNull Document document) {
|
||||
if (document instanceof FrozenDocument) return (DocumentEx)document;
|
||||
|
||||
@@ -929,6 +947,8 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ApiStatus.Internal
|
||||
public @NotNull @Unmodifiable List<DocumentEvent> getEventsSinceCommit(@NotNull Document document) {
|
||||
assert document instanceof DocumentImpl : document;
|
||||
UncommittedInfo info = getUncommittedInfo(document);
|
||||
@@ -951,11 +971,13 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
@Override
|
||||
public @NotNull Map<Document, Throwable> getUncommitedDocumentsWithTraces() {
|
||||
return Collections.unmodifiableMap(myUncommittedDocumentTraces);
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
@Override
|
||||
public boolean isInUncommittedSet(@NotNull Document document) {
|
||||
return myUncommittedDocuments.contains(getTopLevelDocument(document));
|
||||
}
|
||||
@@ -1165,6 +1187,7 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
@Override
|
||||
public void handleCommitWithoutPsi(@NotNull Document document) {
|
||||
UncommittedInfo prevInfo = clearUncommittedInfo(document);
|
||||
if (prevInfo == null) {
|
||||
@@ -1287,6 +1310,7 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
|
||||
|
||||
@TestOnly
|
||||
@ApiStatus.Internal
|
||||
@Override
|
||||
public void clearUncommittedDocuments() {
|
||||
myUncommittedDocuments.clear();
|
||||
myUncommittedDocumentTraces.clear();
|
||||
@@ -1294,6 +1318,8 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
@Override
|
||||
@ApiStatus.Internal
|
||||
public void disableBackgroundCommit(@NotNull Disposable parentDisposable) {
|
||||
assert myPerformBackgroundCommit;
|
||||
myPerformBackgroundCommit = false;
|
||||
@@ -1303,10 +1329,13 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
|
||||
@Override
|
||||
public void dispose() {}
|
||||
|
||||
@Override
|
||||
public @NotNull PsiToDocumentSynchronizer getSynchronizer() {
|
||||
return mySynchronizer;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ApiStatus.Internal
|
||||
public void reparseFileFromText(@NotNull PsiFileImpl file) {
|
||||
if (isCommitInProgress()) {
|
||||
throw new IllegalStateException("Re-entrant commit is not allowed");
|
||||
@@ -1336,22 +1365,25 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@ApiStatus.Internal
|
||||
public @Unmodifiable List<BooleanRunnable> reparseChangedInjectedFragments(@NotNull Document hostDocument,
|
||||
@NotNull PsiFile hostPsiFile,
|
||||
@NotNull TextRange range,
|
||||
@NotNull ProgressIndicator indicator,
|
||||
@NotNull ASTNode oldRoot,
|
||||
@NotNull ASTNode newRoot) {
|
||||
@Override
|
||||
public @NotNull @Unmodifiable List<BooleanRunnable> reparseChangedInjectedFragments(@NotNull Document hostDocument,
|
||||
@NotNull PsiFile hostPsiFile,
|
||||
@NotNull TextRange range,
|
||||
@NotNull ProgressIndicator indicator,
|
||||
@NotNull ASTNode oldRoot,
|
||||
@NotNull ASTNode newRoot) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
@Override
|
||||
@ApiStatus.Internal
|
||||
public boolean isDefaultProject() {
|
||||
return myProject.isDefault();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNls String someDocumentDebugInfo(@NotNull Document document) {
|
||||
@NotNull List<FileViewProvider> viewProviders = getCachedViewProviders(document);
|
||||
return "cachedProvider: " + viewProviders +
|
||||
@@ -1365,6 +1397,7 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen
|
||||
* Try to find the project the {@code virtualFile} belongs to (from the directory structure the file located in) and make sure it's the same as {@link #myProject}
|
||||
*/
|
||||
@ApiStatus.Internal
|
||||
@Override
|
||||
public void assertFileIsFromCorrectProject(@NotNull VirtualFile virtualFile) {}
|
||||
|
||||
@TestOnly
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.psi.impl;
|
||||
|
||||
import com.intellij.codeInsight.multiverse.CodeInsightContext;
|
||||
import com.intellij.lang.ASTNode;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.event.DocumentEvent;
|
||||
import com.intellij.openapi.editor.ex.DocumentEx;
|
||||
import com.intellij.openapi.progress.ProgressIndicator;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.FileViewProvider;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.impl.source.PsiFileImpl;
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@ApiStatus.Internal
|
||||
public abstract class PsiDocumentManagerEx extends PsiDocumentManager implements Disposable {
|
||||
public abstract @NotNull Project getProject();
|
||||
|
||||
public abstract void associatePsi(@NotNull Document document, @NotNull PsiFile file);
|
||||
|
||||
public abstract @Nullable PsiFile getRawCachedFile(@NotNull VirtualFile virtualFile, @NotNull CodeInsightContext context);
|
||||
|
||||
public abstract @NotNull @Unmodifiable List<FileViewProvider> getCachedViewProviders(@NotNull Document document);
|
||||
|
||||
public abstract boolean cancelAndRunWhenAllCommitted(@NonNls @NotNull Object key, @NotNull Runnable action);
|
||||
|
||||
public abstract void addRunOnCommit(@NotNull Document document, @NotNull Consumer<? super @NotNull Document> action);
|
||||
|
||||
public abstract boolean isEventSystemEnabled(@NotNull Document document);
|
||||
|
||||
public abstract boolean finishCommit(@NotNull Document document,
|
||||
@NotNull @Unmodifiable List<? extends BooleanRunnable> finishProcessors,
|
||||
@NotNull @Unmodifiable List<? extends BooleanRunnable> reparseInjectedProcessors,
|
||||
boolean synchronously,
|
||||
@NotNull Object reason);
|
||||
|
||||
public abstract void forceReload(@Nullable VirtualFile virtualFile,
|
||||
@NotNull @Unmodifiable List<? extends FileViewProvider> viewProviders);
|
||||
|
||||
// true if the PSI is being modified and events being sent
|
||||
public abstract boolean isCommitInProgress();
|
||||
|
||||
public abstract @NotNull DocumentEx getLastCommittedDocument(@NotNull Document document);
|
||||
|
||||
public abstract @NotNull @Unmodifiable List<DocumentEvent> getEventsSinceCommit(@NotNull Document document);
|
||||
|
||||
public abstract @NotNull Map<Document, Throwable> getUncommitedDocumentsWithTraces();
|
||||
|
||||
public abstract boolean isInUncommittedSet(@NotNull Document document);
|
||||
|
||||
public abstract void handleCommitWithoutPsi(@NotNull Document document);
|
||||
|
||||
@TestOnly
|
||||
public abstract void clearUncommittedDocuments();
|
||||
|
||||
@TestOnly
|
||||
public abstract void disableBackgroundCommit(@NotNull Disposable parentDisposable);
|
||||
|
||||
public abstract @NotNull PsiToDocumentSynchronizer getSynchronizer();
|
||||
|
||||
public abstract void reparseFileFromText(@NotNull PsiFileImpl file);
|
||||
|
||||
@NotNull
|
||||
public abstract @Unmodifiable List<BooleanRunnable> reparseChangedInjectedFragments(@NotNull Document hostDocument,
|
||||
@NotNull PsiFile hostPsiFile,
|
||||
@NotNull TextRange range,
|
||||
@NotNull ProgressIndicator indicator,
|
||||
@NotNull ASTNode oldRoot,
|
||||
@NotNull ASTNode newRoot);
|
||||
|
||||
@TestOnly
|
||||
public abstract boolean isDefaultProject();
|
||||
|
||||
public abstract @NonNls String someDocumentDebugInfo(@NotNull Document document);
|
||||
|
||||
public abstract void assertFileIsFromCorrectProject(@NotNull VirtualFile virtualFile);
|
||||
}
|
||||
@@ -44,13 +44,13 @@ public class PsiToDocumentSynchronizer {
|
||||
private static final Logger LOG = Logger.getInstance(PsiToDocumentSynchronizer.class);
|
||||
private static final Key<Boolean> PSI_DOCUMENT_ATOMIC_ACTION = Key.create("PSI_DOCUMENT_ATOMIC_ACTION");
|
||||
|
||||
private final PsiDocumentManagerBase myPsiDocumentManager;
|
||||
private final PsiDocumentManagerEx myPsiDocumentManager;
|
||||
private final MessageBus myBus;
|
||||
private final Map<Document, Pair<DocumentChangeTransaction, Integer>> myTransactionsMap = new ConcurrentHashMap<>();
|
||||
|
||||
private volatile Document mySyncDocument;
|
||||
|
||||
PsiToDocumentSynchronizer(@NotNull PsiDocumentManagerBase psiDocumentManager, @NotNull MessageBus bus) {
|
||||
PsiToDocumentSynchronizer(@NotNull PsiDocumentManagerEx psiDocumentManager, @NotNull MessageBus bus) {
|
||||
myPsiDocumentManager = psiDocumentManager;
|
||||
myBus = bus;
|
||||
myBus.connect(psiDocumentManager)
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -81,7 +82,7 @@ final class FileElementInfo extends SmartPointerElementInfo {
|
||||
Segment getPsiRange(@NotNull SmartPointerManagerEx manager) {
|
||||
Document currentDoc = FileDocumentManager.getInstance().getCachedDocument(myVirtualFile);
|
||||
Document committedDoc = currentDoc == null ? null :
|
||||
((PsiDocumentManagerBase)PsiDocumentManager.getInstance(myProject)).getLastCommittedDocument(currentDoc);
|
||||
((PsiDocumentManagerEx)PsiDocumentManager.getInstance(myProject)).getLastCommittedDocument(currentDoc);
|
||||
return committedDoc == null ? getRange(manager) : new TextRange(0, committedDoc.getTextLength());
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -15,6 +15,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.FreeThreadedFileViewProvider;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -103,7 +104,7 @@ class InjectedSelfElementInfo extends SmartPointerElementInfo {
|
||||
private PsiFile getInjectedFileIn(@NotNull PsiElement hostContext,
|
||||
@NotNull PsiFile hostFile,
|
||||
@NotNull TextRange rangeInHostFile) {
|
||||
PsiDocumentManagerBase docManager = (PsiDocumentManagerBase)PsiDocumentManager.getInstance(getProject());
|
||||
PsiDocumentManagerEx docManager = (PsiDocumentManagerEx)PsiDocumentManager.getInstance(getProject());
|
||||
PsiFile[] result = {null};
|
||||
PsiLanguageInjectionHost.InjectedPsiVisitor visitor = (injectedPsi, places) -> {
|
||||
Document document = docManager.getDocument(injectedPsi);
|
||||
@@ -178,7 +179,7 @@ class InjectedSelfElementInfo extends SmartPointerElementInfo {
|
||||
Project project = injectedFile.getProject();
|
||||
DocumentWindow documentWindow = ((VirtualFileWindow)virtualFile).getDocumentWindow();
|
||||
if (psi) {
|
||||
documentWindow = (DocumentWindow) ((PsiDocumentManagerBase) PsiDocumentManager.getInstance(project)).getLastCommittedDocument(documentWindow);
|
||||
documentWindow = (DocumentWindow) ((PsiDocumentManagerEx) PsiDocumentManager.getInstance(project)).getLastCommittedDocument(documentWindow);
|
||||
}
|
||||
int start = documentWindow.hostToInjected(hostRange.getStartOffset());
|
||||
int end = documentWindow.hostToInjected(hostRange.getEndOffset());
|
||||
|
||||
@@ -14,6 +14,7 @@ import com.intellij.openapi.util.*;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -227,7 +228,7 @@ public class SelfElementInfo extends SmartPointerElementInfo {
|
||||
if (hasRange()) {
|
||||
Document document = getDocumentToSynchronize();
|
||||
if (document != null) {
|
||||
PsiDocumentManagerBase documentManager = manager.getPsiDocumentManager();
|
||||
PsiDocumentManagerEx documentManager = manager.getPsiDocumentManager();
|
||||
List<DocumentEvent> events = documentManager.getEventsSinceCommit(document);
|
||||
if (!events.isEmpty()) {
|
||||
SmartPointerTracker tracker = manager.getTracker(getVirtualFile());
|
||||
@@ -247,7 +248,7 @@ public class SelfElementInfo extends SmartPointerElementInfo {
|
||||
|
||||
public static Segment calcActualRangeAfterDocumentEvents(@NotNull PsiFile containingFile, @NotNull Document document, @NotNull Segment segment, boolean isSegmentGreedy) {
|
||||
Project project = containingFile.getProject();
|
||||
PsiDocumentManagerBase documentManager = (PsiDocumentManagerBase)PsiDocumentManager.getInstance(project);
|
||||
PsiDocumentManagerEx documentManager = (PsiDocumentManagerEx)PsiDocumentManager.getInstance(project);
|
||||
List<DocumentEvent> events = documentManager.getEventsSinceCommit(document);
|
||||
if (!events.isEmpty()) {
|
||||
SmartPointerManagerEx pointerManager = (SmartPointerManagerEx)SmartPointerManager.getInstance(project);
|
||||
|
||||
+2
-1
@@ -9,6 +9,7 @@ import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -40,5 +41,5 @@ public abstract class SmartPointerManagerEx extends SmartPointerManager {
|
||||
public abstract Project getProject();
|
||||
|
||||
@NotNull
|
||||
public abstract PsiDocumentManagerBase getPsiDocumentManager();
|
||||
public abstract PsiDocumentManagerEx getPsiDocumentManager();
|
||||
}
|
||||
|
||||
+4
-3
@@ -15,6 +15,7 @@ import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
import com.intellij.testFramework.LightVirtualFile;
|
||||
import com.intellij.util.containers.CollectionFactory;
|
||||
@@ -32,13 +33,13 @@ import static com.intellij.reference.SoftReference.dereference;
|
||||
public final class SmartPointerManagerImpl extends SmartPointerManagerEx implements Disposable {
|
||||
private static final Logger LOG = Logger.getInstance(SmartPointerManagerImpl.class);
|
||||
private final Project myProject;
|
||||
private final PsiDocumentManagerBase myPsiDocManager;
|
||||
private final PsiDocumentManagerEx myPsiDocManager;
|
||||
private final Key<WeakReference<SmartPointerTracker>> LIGHT_TRACKER_KEY;
|
||||
private final ConcurrentMap<VirtualFile, SmartPointerTracker> myPhysicalTrackers = CollectionFactory.createConcurrentWeakValueMap();
|
||||
|
||||
public SmartPointerManagerImpl(@NotNull Project project) {
|
||||
myProject = project;
|
||||
myPsiDocManager = (PsiDocumentManagerBase)PsiDocumentManager.getInstance(project);
|
||||
myPsiDocManager = (PsiDocumentManagerEx)PsiDocumentManager.getInstance(project);
|
||||
LIGHT_TRACKER_KEY = Key.create("SMART_POINTERS " + (project.isDefault() ? "default" : project.hashCode()));
|
||||
}
|
||||
|
||||
@@ -243,7 +244,7 @@ public final class SmartPointerManagerImpl extends SmartPointerManagerEx impleme
|
||||
@ApiStatus.Internal
|
||||
@Override
|
||||
@NotNull
|
||||
public PsiDocumentManagerBase getPsiDocumentManager() {
|
||||
public PsiDocumentManagerEx getPsiDocumentManager() {
|
||||
return myPsiDocManager;
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -18,6 +18,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.FreeThreadedFileViewProvider;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import com.intellij.psi.impl.PsiManagerEx;
|
||||
import com.intellij.psi.impl.source.PsiFileImpl;
|
||||
import com.intellij.psi.stubs.LanguageStubDescriptor;
|
||||
@@ -201,7 +202,7 @@ public class SmartPsiElementPointerImpl<E extends PsiElement> implements SmartPo
|
||||
|
||||
Document document = FileDocumentManager.getInstance().getCachedDocument(virtualFile);
|
||||
if (document != null &&
|
||||
((PsiDocumentManagerBase)PsiDocumentManager.getInstance(project)).getSynchronizer().isDocumentAffectedByTransactions(document)) {
|
||||
((PsiDocumentManagerEx)PsiDocumentManager.getInstance(project)).getSynchronizer().isDocumentAffectedByTransactions(document)) {
|
||||
LOG.error("Smart pointers must not be created during PSI changes");
|
||||
}
|
||||
|
||||
|
||||
@@ -1143,8 +1143,8 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF
|
||||
|
||||
private void checkWritable() {
|
||||
PsiDocumentManager docManager = PsiDocumentManager.getInstance(getProject());
|
||||
if (docManager instanceof PsiDocumentManagerBase &&
|
||||
!((PsiDocumentManagerBase)docManager).isCommitInProgress() &&
|
||||
if (docManager instanceof PsiDocumentManagerEx &&
|
||||
!((PsiDocumentManagerEx)docManager).isCommitInProgress() &&
|
||||
!(myViewProvider instanceof FreeThreadedFileViewProvider)) {
|
||||
CheckUtil.checkWritable(this);
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ class DocumentCommitThread : DocumentCommitProcessor, Disposable {
|
||||
|
||||
override fun commitAsynchronously(
|
||||
project: Project,
|
||||
documentManager: PsiDocumentManagerBase,
|
||||
documentManager: PsiDocumentManagerEx,
|
||||
document: Document,
|
||||
reason: Any,
|
||||
modality: ModalityState,
|
||||
@@ -94,7 +94,7 @@ class DocumentCommitThread : DocumentCommitProcessor, Disposable {
|
||||
}
|
||||
|
||||
@Suppress("SuspiciousPackagePrivateAccess")
|
||||
require(documentManager.myProject === project) { "Wrong project: $project; expected: ${documentManager.myProject}" }
|
||||
require(documentManager.project === project) { "Wrong project: $project; expected: ${documentManager.project}" }
|
||||
|
||||
TransactionGuard.getInstance().assertWriteSafeContext(modality)
|
||||
|
||||
@@ -123,7 +123,7 @@ class DocumentCommitThread : DocumentCommitProcessor, Disposable {
|
||||
val publishedDocumentCommitRequests: ConcurrentMap<Document, Job> = CollectionFactory.createConcurrentWeakMap()
|
||||
}
|
||||
|
||||
private fun commitDocumentWithCoroutines(document: Document, task: CommitTask, documentManager: PsiDocumentManagerBase) {
|
||||
private fun commitDocumentWithCoroutines(document: Document, task: CommitTask, documentManager: PsiDocumentManagerEx) {
|
||||
val service = task.myProject.service<PerProjectDocumentCommitRegistry>()
|
||||
val job = service.scope.launch(commitDispatcher, start = CoroutineStart.LAZY) {
|
||||
commitDispatcherSuspender.acquire()
|
||||
@@ -157,7 +157,7 @@ class DocumentCommitThread : DocumentCommitProcessor, Disposable {
|
||||
job.start()
|
||||
}
|
||||
|
||||
private fun ReadAndWriteScope.doCommitInReadAndWriteScope(task: CommitTask, documentManager: PsiDocumentManagerBase): ReadResult<Unit> {
|
||||
private fun ReadAndWriteScope.doCommitInReadAndWriteScope(task: CommitTask, documentManager: PsiDocumentManagerEx): ReadResult<Unit> {
|
||||
if (isExpired(task, documentManager)) {
|
||||
return value(Unit)
|
||||
}
|
||||
@@ -170,7 +170,7 @@ class DocumentCommitThread : DocumentCommitProcessor, Disposable {
|
||||
}
|
||||
}
|
||||
|
||||
private fun isExpired(task: CommitTask, docManager: PsiDocumentManagerBase): Boolean {
|
||||
private fun isExpired(task: CommitTask, docManager: PsiDocumentManagerEx): Boolean {
|
||||
return isDisposed || task.isExpired(docManager)
|
||||
}
|
||||
|
||||
@@ -181,7 +181,7 @@ class DocumentCommitThread : DocumentCommitProcessor, Disposable {
|
||||
"Must not call sync commit with unopened project: $project; Disposed: ${project.isDisposed()}; Open: ${project.isOpen()}"
|
||||
}
|
||||
|
||||
val documentManager = PsiDocumentManager.getInstance(project) as PsiDocumentManagerBase
|
||||
val documentManager = PsiDocumentManager.getInstance(project) as PsiDocumentManagerEx
|
||||
val task = CommitTask(project, document, "Sync commit", ModalityState.defaultModalityState())
|
||||
|
||||
commitUnderProgress(task, synchronously = true, documentManager)()
|
||||
@@ -189,7 +189,7 @@ class DocumentCommitThread : DocumentCommitProcessor, Disposable {
|
||||
|
||||
@RequiresReadLock
|
||||
// returns finish commit Runnable (to be invoked later in EDT) or null on failure
|
||||
private fun commitUnderProgress(task: CommitTask, synchronously: Boolean, documentManager: PsiDocumentManagerBase): () -> Unit {
|
||||
private fun commitUnderProgress(task: CommitTask, synchronously: Boolean, documentManager: PsiDocumentManagerEx): () -> Unit {
|
||||
if (!synchronously) {
|
||||
ApplicationManager.getApplication().assertIsNonDispatchThread()
|
||||
}
|
||||
@@ -388,7 +388,7 @@ class DocumentCommitThread : DocumentCommitProcessor, Disposable {
|
||||
null
|
||||
}
|
||||
}
|
||||
fun isExpired(documentManager: PsiDocumentManagerBase): Boolean {
|
||||
fun isExpired(documentManager: PsiDocumentManagerEx): Boolean {
|
||||
val document = stillValidDocument()
|
||||
val expired = myProject.isDisposed() ||
|
||||
document == null ||
|
||||
@@ -408,7 +408,7 @@ class DocumentCommitThread : DocumentCommitProcessor, Disposable {
|
||||
oldFileNode: FileASTNode,
|
||||
changedPsiRange: ProperTextRange,
|
||||
outReparseInjectedProcessors: MutableList<BooleanRunnable>,
|
||||
documentManager: PsiDocumentManagerBase,
|
||||
documentManager: PsiDocumentManagerEx,
|
||||
): BooleanRunnable {
|
||||
if (!synchronously) {
|
||||
ApplicationManager.getApplication().assertIsNonDispatchThread()
|
||||
@@ -471,7 +471,7 @@ class DocumentCommitThread : DocumentCommitProcessor, Disposable {
|
||||
|
||||
private fun handleCommitWithoutPsi(
|
||||
task: CommitTask,
|
||||
documentManager: PsiDocumentManagerBase,
|
||||
documentManager: PsiDocumentManagerEx,
|
||||
): BooleanRunnable {
|
||||
return BooleanRunnable {
|
||||
val document = task.myDocumentRef.get() ?: return@BooleanRunnable false
|
||||
|
||||
+2
-1
@@ -20,6 +20,7 @@ import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.PsiLanguageInjectionHost.Shred
|
||||
import com.intellij.psi.createSmartPointer
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx
|
||||
import com.intellij.psi.impl.source.resolve.FileContextUtil
|
||||
import com.intellij.util.SmartList
|
||||
import com.intellij.util.containers.ContainerUtil
|
||||
@@ -35,7 +36,7 @@ internal class IndentAwareInjectedFileChangesHandler(shreds: List<Shred>, editor
|
||||
myHostDocument.addDocumentListener(object : DocumentListener {
|
||||
override fun documentChanged(event: DocumentEvent) {
|
||||
if (UndoManager.getInstance(myProject).isUndoInProgress) {
|
||||
(PsiDocumentManager.getInstance(myProject) as PsiDocumentManagerBase).addRunOnCommit(myHostDocument) { thisDoc ->
|
||||
(PsiDocumentManager.getInstance(myProject) as PsiDocumentManagerEx).addRunOnCommit(myHostDocument) { thisDoc ->
|
||||
rebuildMarkers(markersWholeRange(markers) ?: failAndReport("can't get marker range in undo", event))
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -14,7 +14,7 @@ import com.intellij.openapi.diagnostic.thisLogger
|
||||
import com.intellij.openapi.project.DumbService
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiDocumentManager
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx
|
||||
import kotlinx.coroutines.Runnable
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -152,7 +152,7 @@ fun AppUIExecutor.coroutineDispatchingContext(): ContinuationInterceptor {
|
||||
|
||||
internal class WithDocumentsCommitted(private val project: Project, private val modality: ModalityState) : ContextConstraint {
|
||||
override fun isCorrectContext(): Boolean {
|
||||
val manager = PsiDocumentManager.getInstance(project) as PsiDocumentManagerBase
|
||||
val manager = PsiDocumentManager.getInstance(project) as PsiDocumentManagerEx
|
||||
return !manager.isCommitInProgress && !manager.hasEventSystemEnabledUncommittedDocuments()
|
||||
}
|
||||
|
||||
@@ -166,7 +166,7 @@ internal class WithDocumentsCommitted(private val project: Project, private val
|
||||
""
|
||||
}
|
||||
else {
|
||||
val manager = PsiDocumentManager.getInstance(project) as PsiDocumentManagerBase
|
||||
val manager = PsiDocumentManager.getInstance(project) as PsiDocumentManagerEx
|
||||
", isCommitInProgress()=${manager.isCommitInProgress}" +
|
||||
", hasEventSystemEnabledUncommittedDocuments()=${manager.hasEventSystemEnabledUncommittedDocuments()}"
|
||||
}
|
||||
|
||||
+2
-1
@@ -6,13 +6,14 @@ import com.intellij.openapi.application.ReadConstraint
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiDocumentManager
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx
|
||||
|
||||
internal class CommittedDocumentsConstraint(
|
||||
private val project: Project,
|
||||
) : ReadConstraint {
|
||||
|
||||
override fun isSatisfied(): Boolean {
|
||||
val manager = PsiDocumentManager.getInstance(project) as PsiDocumentManagerBase
|
||||
val manager = PsiDocumentManager.getInstance(project) as PsiDocumentManagerEx
|
||||
return !manager.isCommitInProgress && !manager.hasEventSystemEnabledUncommittedDocuments()
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.intellij.openapi.editor.impl.event.EditorEventMulticasterImpl;
|
||||
import com.intellij.openapi.vfs.encoding.EncodingManager;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import org.jetbrains.annotations.TestOnly;
|
||||
import org.junit.Assert;
|
||||
|
||||
@@ -35,7 +36,7 @@ public final class EditorListenerTracker {
|
||||
// listeners may hang on default project which comes and goes unpredictably, so just ignore them
|
||||
afterList.removeIf(listener -> {
|
||||
//noinspection CastConflictsWithInstanceof
|
||||
if (listener instanceof PsiDocumentManager && ((PsiDocumentManagerBase)listener).isDefaultProject()) {
|
||||
if (listener instanceof PsiDocumentManager && ((PsiDocumentManagerEx)listener).isDefaultProject()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -52,6 +52,7 @@ import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import com.intellij.psi.impl.PsiManagerEx;
|
||||
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageManagerImpl;
|
||||
import com.intellij.testFramework.common.TestApplicationKt;
|
||||
@@ -245,7 +246,7 @@ public abstract class HeavyPlatformTestCase extends UsefulTestCase implements Da
|
||||
if (myProject != null) {
|
||||
CodeStyle.setTemporarySettings(myProject, CodeStyle.createTestSettings());
|
||||
InjectedLanguageManagerImpl.pushInjectors(myProject);
|
||||
((PsiDocumentManagerBase)PsiDocumentManager.getInstance(myProject)).clearUncommittedDocuments();
|
||||
((PsiDocumentManagerEx)PsiDocumentManager.getInstance(myProject)).clearUncommittedDocuments();
|
||||
IndexingTestUtil.waitUntilIndexesAreReady(myProject, getIndexingTimeout());
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.intellij.openapi.util.registry.Registry
|
||||
import com.intellij.platform.backend.observation.Observation
|
||||
import com.intellij.psi.PsiDocumentManager
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx
|
||||
import com.intellij.testFramework.common.DEFAULT_TEST_TIMEOUT
|
||||
import com.intellij.testFramework.common.DEFAULT_TEST_TIMEOUT_MS
|
||||
import com.intellij.testFramework.concurrency.waitForPromiseAndPumpEdt
|
||||
@@ -75,7 +76,7 @@ object TestObservation {
|
||||
if (!Registry.`is`("ide.activity.tracking.enable.debug")) {
|
||||
return "Enable 'ide.activity.tracking.enable.debug' registry option to collect uncommited document traces"
|
||||
}
|
||||
val psiDocumentManager = PsiDocumentManager.getInstance(project) as PsiDocumentManagerBase
|
||||
val psiDocumentManager = PsiDocumentManager.getInstance(project) as PsiDocumentManagerEx
|
||||
return psiDocumentManager.uncommitedDocumentsWithTraces.entries
|
||||
.joinToString("\n") {
|
||||
it.key.toString() + ": " + it.value.stackTraceToString()
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import com.intellij.psi.impl.source.PsiFileImpl;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.PsiShortNamesCache;
|
||||
@@ -47,7 +48,7 @@ public class GroovyStubsTest extends LightJavaCodeInsightFixtureTestCase {
|
||||
}
|
||||
|
||||
public void testStubIndexMismatch() {
|
||||
((PsiDocumentManagerBase)PsiDocumentManager.getInstance(getProject())).disableBackgroundCommit(myFixture.getTestRootDisposable());
|
||||
((PsiDocumentManagerEx)PsiDocumentManager.getInstance(getProject())).disableBackgroundCommit(myFixture.getTestRootDisposable());
|
||||
|
||||
VirtualFile vFile = myFixture.getTempDirFixture().createFile("foo.groovy");
|
||||
final Project project = myFixture.getProject();
|
||||
|
||||
+3
-2
@@ -25,6 +25,7 @@ import com.intellij.openapi.vfs.VirtualFileManager
|
||||
import com.intellij.psi.PsiDocumentManager
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx
|
||||
import com.intellij.psi.search.FilenameIndex
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import com.intellij.testFramework.ExtensionTestUtil
|
||||
@@ -43,7 +44,7 @@ fun commitAllDocuments() {
|
||||
}
|
||||
|
||||
ProjectManagerEx.getInstanceEx().openProjects.forEach { project ->
|
||||
val psiDocumentManagerBase = PsiDocumentManager.getInstance(project) as PsiDocumentManagerBase
|
||||
val psiDocumentManagerBase = PsiDocumentManager.getInstance(project) as PsiDocumentManagerEx
|
||||
|
||||
runInEdtAndWait {
|
||||
psiDocumentManagerBase.clearUncommittedDocuments()
|
||||
@@ -53,7 +54,7 @@ fun commitAllDocuments() {
|
||||
}
|
||||
|
||||
fun commitDocument(project: Project, document: Document) {
|
||||
val psiDocumentManagerBase = PsiDocumentManager.getInstance(project) as PsiDocumentManagerBase
|
||||
val psiDocumentManagerBase = PsiDocumentManager.getInstance(project) as PsiDocumentManagerEx
|
||||
runInEdtAndWait {
|
||||
psiDocumentManagerBase.commitDocument(document)
|
||||
}
|
||||
|
||||
+2
-1
@@ -16,6 +16,7 @@ import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.psi.PsiDocumentManager
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import com.intellij.testFramework.*
|
||||
import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl
|
||||
@@ -70,7 +71,7 @@ class PerformanceSuite {
|
||||
}
|
||||
|
||||
ProjectManagerEx.getInstanceEx().openProjects.forEach { project ->
|
||||
val psiDocumentManagerBase = PsiDocumentManager.getInstance(project) as PsiDocumentManagerBase
|
||||
val psiDocumentManagerBase = PsiDocumentManager.getInstance(project) as PsiDocumentManagerEx
|
||||
|
||||
runInEdtAndWait {
|
||||
psiDocumentManagerBase.clearUncommittedDocuments()
|
||||
|
||||
+2
-1
@@ -22,6 +22,7 @@ import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.PsiDocumentManager
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx
|
||||
import com.intellij.psi.xml.XmlAttributeValue
|
||||
import com.intellij.psi.xml.XmlElement
|
||||
import com.intellij.psi.xml.XmlFile
|
||||
@@ -41,7 +42,7 @@ class MavenModelVersionSyncronizerImpl(
|
||||
}
|
||||
|
||||
private var applying = false
|
||||
private val pdm = PsiDocumentManager.getInstance(project) as PsiDocumentManagerBase
|
||||
private val pdm = PsiDocumentManager.getInstance(project) as PsiDocumentManagerEx
|
||||
|
||||
fun listenForDocumentChanges() {
|
||||
Disposer.register(editor.disposable, this)
|
||||
|
||||
@@ -29,6 +29,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.pom.core.impl.PomModelImpl;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerEx;
|
||||
import com.intellij.psi.impl.source.tree.LeafPsiElement;
|
||||
import com.intellij.psi.impl.source.tree.TreeUtil;
|
||||
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtilBase;
|
||||
@@ -56,7 +57,7 @@ final class XmlTagNameSynchronizerImpl implements DocumentListener, CaretListene
|
||||
private static final Key<XmlTagNameSynchronizerImpl> SYNCHRONIZER_KEY = XmlTagNameSynchronizer.Companion.getSYNCHRONIZER_KEY$intellij_xml_impl();
|
||||
private static final Key<Couple<RangeMarker>> MARKERS_KEY = Key.create("tag.name.synchronizer.markers");
|
||||
private static final TreeSet<Segment> allMarkers = new TreeSet<>(Comparator.comparingInt(Segment::getStartOffset));
|
||||
private final PsiDocumentManagerBase myDocumentManager;
|
||||
private final PsiDocumentManagerEx myDocumentManager;
|
||||
private final Language myLanguage;
|
||||
private final EditorImpl myEditor;
|
||||
private final Project myProject;
|
||||
@@ -65,7 +66,7 @@ final class XmlTagNameSynchronizerImpl implements DocumentListener, CaretListene
|
||||
XmlTagNameSynchronizerImpl(EditorImpl editor, Project project, Language language) {
|
||||
myEditor = editor;
|
||||
myLanguage = language;
|
||||
myDocumentManager = (PsiDocumentManagerBase)PsiDocumentManager.getInstance(project);
|
||||
myDocumentManager = (PsiDocumentManagerEx)PsiDocumentManager.getInstance(project);
|
||||
myProject = project;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user