com.intellij.psi.search.GlobalSearchScope#contains ( )源码实例Demo

下面列出了com.intellij.psi.search.GlobalSearchScope#contains ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: intellij-haxe   文件: HaxeProjectModel.java
@Nullable
public List<HaxeModel> resolve(FullyQualifiedInfo info, @Nullable GlobalSearchScope searchScope) {
  if (info == null) return null;
  HaxeModel resolvedValue;
  List<HaxeModel> result = new ArrayList<>();
  for (HaxeSourceRootModel root : getRoots()) {
    if (searchScope == null || !searchScope.contains(root.root)) {
      continue;
    }
    resolvedValue = root.resolve(info);
    if (resolvedValue != null) result.add(resolvedValue);
  }

  if (result.isEmpty()) {
    resolvedValue = getStdPackage().resolve(info);
    if (resolvedValue != null) result.add(resolvedValue);
  }

  return result;
}
 
源代码2 项目: consulo   文件: ResourceFileUtil.java
@Nullable
public static VirtualFile findResourceFileInScope(final String resourceName,
                                                  final Project project,
                                                  final GlobalSearchScope scope) {
  int index = resourceName.lastIndexOf('/');
  String packageName = index >= 0 ? resourceName.substring(0, index).replace('/', '.') : "";
  final String fileName = index >= 0 ? resourceName.substring(index+1) : resourceName;
  Query<VirtualFile> directoriesByPackageName = DirectoryIndex.getInstance(project).getDirectoriesByPackageName(packageName, true);
  for (VirtualFile virtualFile : directoriesByPackageName) {
    final VirtualFile child = virtualFile.findChild(fileName);
    if(child != null && scope.contains(child)) {
      return child;
    }
  }
  return null;
}
 
源代码3 项目: consulo   文件: PsiFileReferenceHelper.java
static Collection<PsiFileSystemItem> getContextsForModule(@Nonnull Module module, @Nonnull String packageName, @Nullable GlobalSearchScope scope) {
  List<PsiFileSystemItem> result = null;
  Query<VirtualFile> query = DirectoryIndex.getInstance(module.getProject()).getDirectoriesByPackageName(packageName, false);
  PsiManager manager = null;

  for (VirtualFile file : query) {
    if (scope != null && !scope.contains(file)) continue;
    if (result == null) {
      result = new ArrayList<>();
      manager = PsiManager.getInstance(module.getProject());
    }
    PsiDirectory psiDirectory = manager.findDirectory(file);
    if (psiDirectory != null) result.add(psiDirectory);
  }

  return result != null ? result : Collections.emptyList();
}
 
源代码4 项目: litho   文件: ComponentFinder.java
@Override
public PsiClass[] getClasses(PsiPackage psiPackage, GlobalSearchScope scope) {
  if (!scope.contains(dummyFile)) return PsiClass.EMPTY_ARRAY;

  // We don't create own package, but provide additional classes to existing one
  final String packageQN = psiPackage.getQualifiedName();
  return Arrays.stream(ComponentsCacheService.getInstance(project).getAllComponents())
      .filter(cls -> StringUtil.getPackageName(cls.getQualifiedName()).equals(packageQN))
      .toArray(PsiClass[]::new);
}
 
源代码5 项目: litho   文件: ComponentFinder.java
@Nullable
private PsiClass findClassInternal(
    String qualifiedName, GlobalSearchScope scope, Project project) {
  if (!scope.contains(dummyFile)) return null;

  if (!StringUtil.isJavaIdentifier(StringUtil.getShortName(qualifiedName))) return null;

  final PsiClass componentFromCache =
      ComponentsCacheService.getInstance(project).getComponent(qualifiedName);

  return componentFromCache;
}
 
源代码6 项目: litho   文件: ComponentShortNamesCache.java
@Override
public PsiClass[] getClassesByName(String name, GlobalSearchScope scope) {
  if (!scope.contains(dummyFile)) return PsiClass.EMPTY_ARRAY;

  return Arrays.stream(ComponentsCacheService.getInstance(project).getAllComponents())
      .filter(
          cls -> {
            final String shortName = StringUtil.getShortName(cls.getQualifiedName());
            return shortName.equals(name);
          })
      .toArray(PsiClass[]::new);
}
 
源代码7 项目: intellij   文件: PyIssueParserProvider.java
/** Used to sort search results, in order: {project, library, sdk, no virtual file} */
private static int rankResult(PsiFile file, GlobalSearchScope projectScope, Sdk sdk) {
  VirtualFile vf = file.getVirtualFile();
  if (vf == null) {
    return 3;
  }
  if (projectScope.contains(vf)) {
    return 0;
  }
  return PythonSdkType.isStdLib(vf, sdk) ? 2 : 1;
}
 
/**
 * Processes all named elements that match the specified word, e.g. the declaration of a type name
 */
public void processElementsWithWord(PsiElement scopedElement, String word, Processor<PsiNamedElement> processor) {
    try {
        final GlobalSearchScope schemaScope = getSchemaScope(scopedElement);

        processElementsWithWordUsingIdentifierIndex(schemaScope, word, processor);

        // also include the built-in schemas
        final PsiRecursiveElementVisitor builtInFileVisitor = new PsiRecursiveElementVisitor() {
            @Override
            public void visitElement(PsiElement element) {
                if (element instanceof PsiNamedElement && word.equals(element.getText())) {
                    if (!processor.process((PsiNamedElement) element)) {
                        return; // done processing
                    }
                }
                super.visitElement(element);
            }
        };

        // spec schema
        getBuiltInSchema().accept(builtInFileVisitor);

        // relay schema if enabled
        final PsiFile relayModernDirectivesSchema = getRelayModernDirectivesSchema();
        if (schemaScope.contains(relayModernDirectivesSchema.getVirtualFile())) {
            relayModernDirectivesSchema.accept(builtInFileVisitor);
        }

        // finally, look in the current scratch file
        if (GraphQLFileType.isGraphQLScratchFile(myProject, getVirtualFile(scopedElement.getContainingFile()))) {
            scopedElement.getContainingFile().accept(builtInFileVisitor);
        }

    } catch (IndexNotReadyException e) {
        // can't search yet (e.g. during project startup)
    }
}
 
/**
 * Process built-in GraphQL PsiFiles that are not the spec schema
 *
 * @param schemaScope the search scope to use for limiting the schema definitions
 * @param consumer    a consumer that will be invoked for each injected GraphQL PsiFile
 */
public void processAdditionalBuiltInPsiFiles(GlobalSearchScope schemaScope, Consumer<PsiFile> consumer) {
    final PsiFile relayModernDirectivesSchema = getRelayModernDirectivesSchema();
    if (schemaScope.contains(relayModernDirectivesSchema.getVirtualFile())) {
        consumer.accept(relayModernDirectivesSchema);
    }
}
 
源代码10 项目: consulo   文件: SourceScope.java
@Nullable
private GlobalSearchScope findScopeFor(final VirtualFile file) {
  if (myMainScope.contains(file)) return myMainScope;
  //noinspection ForLoopReplaceableByForEach
  for (int i = 0, size = myScopes.size(); i < size; i++) {
    GlobalSearchScope scope = myScopes.get(i);
    if (scope.contains(file)) return scope;
  }
  return null;
}
 
源代码11 项目: consulo   文件: PsiPackageBase.java
@Override
@Nonnull
public PsiDirectory[] getDirectories(@Nonnull GlobalSearchScope scope) {
  List<PsiDirectory> result = null;
  final boolean includeLibrarySources = scope.isForceSearchingInLibrarySources();
  final Collection<PsiDirectory> directories = getAllDirectories(includeLibrarySources);
  for (final PsiDirectory directory : directories) {
    if (scope.contains(directory.getVirtualFile())) {
      if (result == null) result = new ArrayList<PsiDirectory>();
      result.add(directory);
    }
  }
  return result == null ? PsiDirectory.EMPTY_ARRAY : result.toArray(new PsiDirectory[result.size()]);
}
 
源代码12 项目: consulo   文件: PlatformPackageUtil.java
@Nullable
private static PsiDirectory getWritableModuleDirectory(@Nonnull Query<VirtualFile> vFiles,
                                                       GlobalSearchScope scope,
                                                       PsiManager manager) {
  for (VirtualFile vFile : vFiles) {
    if (!scope.contains(vFile)) continue;
    PsiDirectory directory = manager.findDirectory(vFile);
    if (directory != null && directory.isValid() && directory.isWritable()) {
      return directory;
    }
  }
  return null;
}
 
源代码13 项目: CppTools   文件: CppReferencesSearcher.java
private boolean doFindRefsInCppCode(final PsiFile psiFile, PsiElement target, ReferencesSearch.SearchParameters params,
                                    GlobalSearchScope globalScope, final Processor<PsiReference> processor) {
  final Project project = psiFile.getProject();
  final String commandName = project.getUserData(ourKey);
  final int offset;
  VirtualFile file;

  if (target instanceof CppFile) {
    offset = FindUsagesCommand.MAGIC_FILE_OFFSET;
    file = ((CppFile)target).getVirtualFile();
  } else {
    VirtualFile actionStartFile = null;
    int actionStartOffset = -1;
    
    final PsiFile actionStartPsiFile = project.getUserData(ourFileKey);
    if (actionStartPsiFile != null) {
      actionStartFile = actionStartPsiFile.getVirtualFile();
      final Integer integer = project.getUserData(ourOffsetKey);
      if (integer != null) actionStartOffset = integer.intValue();
    }
    
    if (actionStartOffset != -1) {
      offset = actionStartOffset;
      file = actionStartFile;
    } else {
      file = psiFile.getVirtualFile();
      offset = target.getTextOffset();
    }
  }

  final FindUsagesCommand findUsagesCommand = new FindUsagesCommand(
    file.getPath(),
    offset,
    RENAME_ACTION_TEXT.equals(commandName)
  );
  findUsagesCommand.setDoInfiniteBlockingWithCancelledCheck(true);

  findUsagesCommand.post(psiFile.getProject());

  if (!findUsagesCommand.hasReadyResult()) return true;

  final int count = findUsagesCommand.getUsageCount();
  if (count == 0) return true;

  final boolean scopeIsLocal = params.getScope() instanceof LocalSearchScope;
  final Set<VirtualFile> localScope = scopeIsLocal ? new HashSet<VirtualFile>() : null;

  if (scopeIsLocal) {
    for(PsiElement e: ((LocalSearchScope)params.getScope()).getScope()) {
      localScope.add(e.getContainingFile().getVirtualFile());
    }
  }

  for(final FileUsage fu:findUsagesCommand.getUsagesList().files) {
    final VirtualFile usagefile = fu.findVirtualFile();
    if ((globalScope != null && !globalScope.contains(usagefile)) ||
        localScope != null && !localScope.contains(usagefile)
      ) {
      continue;
    }


    Runnable runnable = new Runnable() {
      public void run() {
        final PsiFile usageFile = psiFile.getManager().findFile( usagefile );

        for(final OurUsage u:fu.usageList) {
          final PsiElement psiElement = usageFile.findElementAt(u.getStart());

          if (psiElement != null) {
            final PsiElement parentElement = psiElement.getParent();
            if (parentElement instanceof CppElement || parentElement instanceof CppKeyword /*operator*/) {
              final PsiReference reference = parentElement.getReference();
              if (reference != null) processor.process( reference );
            }
          }
        }
      }
    };

    ApplicationManager.getApplication().runReadAction(runnable);
  }
  return false;
}