类com.intellij.psi.impl.PsiManagerEx源码实例Demo

下面列出了怎么用com.intellij.psi.impl.PsiManagerEx的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: intellij   文件: GlobFindUsagesTest.java
@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);
}
 
源代码2 项目: consulo   文件: PlatformTestCase.java
public static void cleanupApplicationCaches(Project project) {
  if (project != null && !project.isDisposed()) {
    UndoManagerImpl globalInstance = (UndoManagerImpl)UndoManager.getGlobalInstance();
    if (globalInstance != null) {
      globalInstance.dropHistoryInTests();
    }
    ((UndoManagerImpl)UndoManager.getInstance(project)).dropHistoryInTests();

    ((PsiManagerEx)PsiManager.getInstance(project)).getFileManager().cleanupForNextTest();
  }

  LocalFileSystemImpl localFileSystem = (LocalFileSystemImpl)LocalFileSystem.getInstance();
  if (localFileSystem != null) {
    localFileSystem.cleanupForNextTest();
  }

  LocalHistory.getInstance().cleanupForNextTest();
}
 
源代码3 项目: consulo   文件: ASTDelegatePsiElement.java
@Override
public PsiManagerEx getManager() {
  Project project = ProjectCoreUtil.theOnlyOpenProject();
  if (project != null) {
    return PsiManagerEx.getInstanceEx(project);
  }
  PsiElement parent = this;

  while (parent instanceof ASTDelegatePsiElement) {
    parent = parent.getParent();
  }

  if (parent == null) {
    throw new PsiInvalidElementAccessException(this);
  }

  return (PsiManagerEx)parent.getManager();
}
 
源代码4 项目: consulo   文件: TreeElement.java
public PsiManagerEx getManager() {
  Project project = ProjectCoreUtil.theOnlyOpenProject();
  if (project != null) {
    return PsiManagerEx.getInstanceEx(project);
  }
  TreeElement element;
  CompositeElement parent;
  for (element = this; (parent = element.getTreeParent()) != null; element = parent) {
  }
  if (element instanceof FileElement) { //TODO!!
    return element.getManager();
  }
  parent = getTreeParent();
  if (parent != null) {
    return parent.getManager();
  }
  return null;
}
 
源代码5 项目: consulo   文件: StubTreeLoaderImpl.java
private void diagnoseLengthMismatch(VirtualFile vFile, boolean wasIndexedAlready, @Nullable Document document, boolean saved, @Nullable PsiFile cachedPsi) {
  String message = "Outdated stub in index: " +
                   vFile +
                   " " +
                   getIndexingStampInfo(vFile) +
                   ", doc=" +
                   document +
                   ", docSaved=" +
                   saved +
                   ", wasIndexedAlready=" +
                   wasIndexedAlready +
                   ", queried at " +
                   vFile.getTimeStamp();
  message += "\ndoc length=" + (document == null ? -1 : document.getTextLength()) + "\nfile length=" + vFile.getLength();
  if (cachedPsi != null) {
    message += "\ncached PSI " + cachedPsi.getClass();
    if (cachedPsi instanceof PsiFileImpl && ((PsiFileImpl)cachedPsi).isContentsLoaded()) {
      message += "\nPSI length=" + cachedPsi.getTextLength();
    }
    List<Project> projects = ContainerUtil.findAll(ProjectManager.getInstance().getOpenProjects(), p -> PsiManagerEx.getInstanceEx(p).getFileManager().findCachedViewProvider(vFile) != null);
    message += "\nprojects with file: " + (LOG.isDebugEnabled() ? projects.toString() : projects.size());
  }

  processError(vFile, message, new Exception());
}
 
源代码6 项目: consulo   文件: DocumentWindowImpl.java
@Override
public boolean isValid() {
  Place shreds;
  synchronized (myLock) {
    shreds = myShreds; // assumption: myShreds list is immutable
  }
  // can grab PsiLock in SmartPsiPointer.restore()
  // will check the 0th element manually (to avoid getting .getHost() twice)
  for (int i = 1; i < shreds.size(); i++) {
    PsiLanguageInjectionHost.Shred shred = shreds.get(i);
    if (!shred.isValid()) return false;
  }

  PsiLanguageInjectionHost.Shred firstShred = shreds.get(0);
  PsiLanguageInjectionHost host = firstShred.getHost();
  if (host == null || firstShred.getHostRangeMarker() == null) return false;
  VirtualFile virtualFile = FileDocumentManager.getInstance().getFile(this);
  return virtualFile != null && ((PsiManagerEx)host.getManager()).getFileManager().findCachedViewProvider(virtualFile) != null;
}
 
源代码7 项目: consulo   文件: InjectedLanguageUtil.java
static void clearCaches(@Nonnull PsiFile injected, @Nonnull DocumentWindowImpl documentWindow) {
  VirtualFileWindowImpl virtualFile = (VirtualFileWindowImpl)injected.getVirtualFile();
  PsiManagerEx psiManagerEx = (PsiManagerEx)injected.getManager();
  if (psiManagerEx.getProject().isDisposed()) return;

  DebugUtil.performPsiModification("injected clearCaches", () -> psiManagerEx.getFileManager().setViewProvider(virtualFile, null));

  VirtualFile delegate = virtualFile.getDelegate();
  if (!delegate.isValid()) return;

  FileViewProvider viewProvider = psiManagerEx.getFileManager().findCachedViewProvider(delegate);
  if (viewProvider == null) return;

  for (PsiFile hostFile : ((AbstractFileViewProvider)viewProvider).getCachedPsiFiles()) {
    // modification of cachedInjectedDocuments must be under InjectedLanguageManagerImpl.ourInjectionPsiLock
    synchronized (InjectedLanguageManagerImpl.ourInjectionPsiLock) {
      List<DocumentWindow> cachedInjectedDocuments = getCachedInjectedDocuments(hostFile);
      for (int i = cachedInjectedDocuments.size() - 1; i >= 0; i--) {
        DocumentWindow cachedInjectedDocument = cachedInjectedDocuments.get(i);
        if (cachedInjectedDocument == documentWindow) {
          cachedInjectedDocuments.remove(i);
        }
      }
    }
  }
}
 
源代码8 项目: consulo   文件: TreeViewUtil.java
private static boolean shouldAbbreviateName(PsiPackage aPackage) {
  final Project project = aPackage.getProject();
  ConcurrentMap<PsiPackage, Boolean> map = project.getUserData(SHOULD_ABBREV_PACK_KEY);
  if (map == null) {
    final ConcurrentMap<PsiPackage, Boolean> newMap = ContainerUtil.createConcurrentWeakMap();
    map = ((UserDataHolderEx)project).putUserDataIfAbsent(SHOULD_ABBREV_PACK_KEY, newMap);
    if (map == newMap) {
      ((PsiManagerEx)PsiManager.getInstance(project)).registerRunnableToRunOnChange(new Runnable() {
        @Override
        public void run() {
          newMap.clear();
        }
      });
    }
  }

  Boolean ret = map.get(aPackage);
  if (ret != null) return ret;
  ret = scanPackages(aPackage, 1);
  map.put(aPackage, ret);
  return ret;
}
 
源代码9 项目: intellij   文件: SkylarkExpressionCodeFragment.java
SkylarkExpressionCodeFragment(Project project, String fileName, String text, boolean isPhysical) {
  super(
      PsiManagerEx.getInstanceEx(project)
          .getFileManager()
          .createFileViewProvider(
              new LightVirtualFile(fileName, BuildFileType.INSTANCE, text), isPhysical));
  this.isPhysical = isPhysical;
  ((SingleRootFileViewProvider) getViewProvider()).forceCachedPsi(this);
}
 
@Nullable
@Override
public PsiElement resolve() {
  final VirtualFile theFile = this.getElement().findTargetFile();

  if (theFile == null) {
    return null;
  } else {
    return PsiManagerEx.getInstance(this.getElement().getProject()).findFile(theFile);
  }
}
 
源代码11 项目: consulo   文件: FileTypeManagerTest.java
public void testAutoDetectTextFileFromContents() throws IOException {
  VirtualFile vFile = myFixture.getTempDirFixture().createFile("test.xxxxxxxx");
  VfsUtil.saveText(vFile, "text");

  FileType type = vFile.getFileType();
  assertEquals(UnknownFileType.INSTANCE, type);

  PsiFile psiFile = ((PsiManagerEx)PsiManager.getInstance(myFixture.getProject())).getFileManager().findFile(vFile); // autodetect text file if needed
  assertNotNull(psiFile);
  assertEquals(PlainTextFileType.INSTANCE, vFile.getFileType());
}
 
源代码12 项目: consulo   文件: FileTypeChooser.java
/**
 * If fileName is already associated any known file type returns it.
 * Otherwise asks user to select file type and associates it with fileName extension if any selected.
 *
 * @return Known file type or null. Never returns {@link UnknownFileType#INSTANCE}.
 */
@Nullable
@RequiredUIAccess
public static FileType getKnownFileTypeOrAssociate(@Nonnull VirtualFile file, @Nullable Project project) {
  if (project != null && !(file instanceof FakeVirtualFile)) {
    PsiManagerEx.getInstanceEx(project).getFileManager().findFile(file); // autodetect text file if needed
  }
  FileType type = file.getFileType();
  if (type == UnknownFileType.INSTANCE) {
    type = getKnownFileTypeOrAssociate(file.getName());
  }
  return type;
}
 
源代码13 项目: consulo   文件: PsiErrorElementUtil.java
public static boolean hasErrors(@Nonnull final Project project, @Nonnull final VirtualFile virtualFile) {
  return ApplicationManager.getApplication().runReadAction(new Computable<Boolean>() {
    @Override
    public Boolean compute() {
      if (project.isDisposed() || !virtualFile.isValid()) {
        return false;
      }
      PsiManagerEx psiManager = PsiManagerEx.getInstanceEx(project);
      PsiFile psiFile = psiManager.getFileManager().findFile(virtualFile);
      return psiFile != null && hasErrors(psiFile);
    }
  });
}
 
源代码14 项目: consulo   文件: StubBasedPsiElementBase.java
@Override
public PsiManagerEx getManager() {
  Project project = ProjectCoreUtil.theOnlyOpenProject();
  if (project != null) {
    return PsiManagerEx.getInstanceEx(project);
  }
  return (PsiManagerEx)getContainingFile().getManager();
}
 
源代码15 项目: consulo   文件: FileElement.java
@Override
public PsiManagerEx getManager() {
  CompositeElement treeParent = getTreeParent();
  if (treeParent != null) return treeParent.getManager();
  PsiElement psi = getPsi();
  if (psi == null) throw PsiInvalidElementAccessException.createByNode(this, null);
  return (PsiManagerEx)psi.getManager();
}
 
源代码16 项目: consulo   文件: PushedFilePropertiesUpdaterImpl.java
private static void reloadPsi(final VirtualFile file, final Project project) {
  final FileManagerImpl fileManager = (FileManagerImpl)PsiManagerEx.getInstanceEx(project).getFileManager();
  if (fileManager.findCachedViewProvider(file) != null) {
    Runnable runnable = () -> WriteAction.run(() -> fileManager.forceReload(file));
    if (ApplicationManager.getApplication().isDispatchThread()) {
      runnable.run();
    }
    else {
      TransactionGuard.submitTransaction(project, runnable);
    }
  }
}
 
源代码17 项目: consulo   文件: StubTreeLoaderImpl.java
private boolean checkLengthMatch(Project project, VirtualFile vFile, boolean wasIndexedAlready, Document document, boolean saved) {
  PsiFile cachedPsi = PsiManagerEx.getInstanceEx(project).getFileManager().getCachedPsiFile(vFile);
  IndexingStampInfo indexingStampInfo = getIndexingStampInfo(vFile);
  if (indexingStampInfo != null && !indexingStampInfo.contentLengthMatches(vFile.getLength(), getCurrentTextContentLength(project, vFile, document, cachedPsi))) {
    diagnoseLengthMismatch(vFile, wasIndexedAlready, document, saved, cachedPsi);
    return false;
  }
  return true;
}
 
源代码18 项目: consulo   文件: StubTreeLoaderImpl.java
@Override
protected boolean hasPsiInManyProjects(@Nonnull final VirtualFile virtualFile) {
  int count = 0;
  for (Project project : ProjectManager.getInstance().getOpenProjects()) {
    if (PsiManagerEx.getInstanceEx(project).getFileManager().findCachedViewProvider(virtualFile) != null) {
      count++;
    }
  }
  return count > 1;
}
 
源代码19 项目: consulo   文件: ConcatenationInjectorManager.java
@Inject
public ConcatenationInjectorManager(@Nonnull Project project) {
  List<ConcatenationAwareInjector> extensionList = ConcatenationAwareInjector.EP_NAME.getExtensionList(project);

  for (ConcatenationAwareInjector concatenationAwareInjector : extensionList) {
    registerConcatenationInjector(concatenationAwareInjector);
  }

  // clear caches even on non-physical changes
  PsiManagerEx.getInstanceEx(project).registerRunnableToRunOnAnyChange(this::incModificationCount);
}
 
源代码20 项目: consulo   文件: InjectedFileViewProvider.java
static InjectedFileViewProvider create(@Nonnull PsiManagerEx manager, @Nonnull VirtualFileWindowImpl file, @Nonnull DocumentWindowImpl window, @Nonnull Language language) {
  AbstractFileViewProvider original = (AbstractFileViewProvider)manager.getFileManager().createFileViewProvider(file, false);
  return original instanceof TemplateLanguageFileViewProvider
         ? new MultipleRootsInjectedFileViewProvider.Template(manager, file, window, language, original)
         : original instanceof MultiplePsiFilesPerDocumentFileViewProvider
           ? new MultipleRootsInjectedFileViewProvider(manager, file, window, language, original)
           : new SingleRootInjectedFileViewProvider(manager, file, window, language);
}
 
源代码21 项目: consulo   文件: SemServiceImpl.java
@Inject
public SemServiceImpl(Project project, PsiManager psiManager) {
  myProject = project;
  final MessageBusConnection connection = project.getMessageBus().connect();
  connection.subscribe(PsiModificationTracker.TOPIC, new PsiModificationTracker.Listener() {
    @Override
    public void modificationCountChanged() {
      if (!isInsideAtomicChange()) {
        clearCache();
      }
    }
  });

  ((PsiManagerEx)psiManager).registerRunnableToRunOnChange(() -> {
    if (!isInsideAtomicChange()) {
      clearCache();
    }
  });


  LowMemoryWatcher.register(() -> {
    if (myCreatingSem.get() == 0) {
      clearCache();
    }
    //System.out.println("SemService cache flushed");
  }, project);
}
 
源代码22 项目: intellij-haxe   文件: HaxePsiReferenceList.java
@Override
public PsiManagerEx getManager() {
  return (PsiManagerEx) mContainingClass.getManager();
}
 
源代码23 项目: consulo   文件: PsiSearchHelperImpl.java
@Inject
public PsiSearchHelperImpl(@Nonnull PsiManager manager) {
  myManager = (PsiManagerEx)manager;
  myDumbService = DumbService.getInstance(myManager.getProject());
}
 
源代码24 项目: consulo   文件: SmartPsiElementPointerImpl.java
void cacheElement(@Nullable E element) {
  myElement = element == null ? null : PsiManagerEx.getInstanceEx(getProject()).isBatchFilesProcessingMode() ? new WeakReference<>(element) : new SoftReference<>(element);
}
 
源代码25 项目: consulo   文件: MockFileManager.java
public MockFileManager(final PsiManagerEx manager) {
  myManager = manager;
  myViewProviders = FactoryMap.create(key -> new SingleRootFileViewProvider(manager, key));
}
 
Template(@Nonnull PsiManagerEx psiManager, @Nonnull VirtualFileWindow virtualFile, @Nonnull DocumentWindowImpl documentWindow, @Nonnull Language language, AbstractFileViewProvider original) {
  super(psiManager, virtualFile, documentWindow, language, original);
  assert myOriginalProvider instanceof TemplateLanguageFileViewProvider;
}
 
 类所在包
 类方法
 同包方法