下面列出了怎么用com.intellij.psi.impl.file.impl.FileManager的API类实例代码及写法,或者点击链接到github查看源代码。
@Test
public void testInMemoryFileHandledGracefully() {
createBuildFile(new WorkspacePath("java/com/google/BUILD"), "glob(['**/*.java'])");
LightVirtualFile inMemoryFile =
new LightVirtualFile("mockProjectViewFile", ProjectViewLanguage.INSTANCE, "");
FileManager fileManager =
((PsiManagerEx) PsiManager.getInstance(getProject())).getFileManager();
fileManager.setViewProvider(
inMemoryFile, fileManager.createFileViewProvider(inMemoryFile, true));
PsiFile psiFile = fileManager.findFile(inMemoryFile);
FindUsages.findAllReferences(psiFile);
}
@Override
@Nullable
public final PsiFile getPsi(@Nonnull Language target) {
if (!isPhysical()) {
FileManager fileManager = getManager().getFileManager();
VirtualFile virtualFile = getVirtualFile();
if (fileManager.findCachedViewProvider(virtualFile) == null && getCachedPsiFiles().isEmpty()) {
fileManager.setViewProvider(virtualFile, this);
}
}
return getPsiInner(target);
}
void handleCommitWithoutPsi(@Nonnull Document document) {
final UncommittedInfo prevInfo = clearUncommittedInfo(document);
if (prevInfo == null) {
return;
}
myUncommittedDocuments.remove(document);
if (!myProject.isInitialized() || myProject.isDisposed() || myProject.isDefault()) {
return;
}
VirtualFile virtualFile = FileDocumentManager.getInstance().getFile(document);
if (virtualFile != null) {
FileManager fileManager = getFileManager();
FileViewProvider viewProvider = fileManager.findCachedViewProvider(virtualFile);
if (viewProvider != null) {
// we can end up outside write action here if the document has forUseInNonAWTThread=true
ApplicationManager.getApplication().runWriteAction((ExternalChangeAction)() -> ((AbstractFileViewProvider)viewProvider).onContentReload());
}
else if (FileIndexFacade.getInstance(myProject).isInContent(virtualFile)) {
ApplicationManager.getApplication().runWriteAction((ExternalChangeAction)() -> ((FileManagerImpl)fileManager).firePropertyChangedForUnloadedPsi());
}
}
runAfterCommitActions(document);
}
@Override
@Nonnull
public FileManager getFileManager() {
if (myMockFileManager == null) {
myMockFileManager = new MockFileManager(this);
}
return myMockFileManager;
}
@Nonnull
private FileManager getFileManager() {
return ((PsiManagerEx)myPsiManager).getFileManager();
}
@Nonnull
public abstract FileManager getFileManager();
@Override
@Nonnull
public FileManager getFileManager() {
return myFileManager;
}