/** * Returns {@link GlobalSearchScope#projectScope(Project)} instance united with additional files. * * @param project current project * @return extended instance of {@link GlobalSearchScope} */ @NotNull public static GlobalSearchScope get(@NotNull Project project) { final IgnoreSearchScope scope = new IgnoreSearchScope(project); final HashSet<VirtualFile> files = ExternalIndexableSetContributor.getAdditionalFiles(project); return scope.uniteWith(GlobalSearchScope.filesScope(project, files)); }
/** * Check is every given file provides a block by name */ private static boolean hasBlockNamesForFiles(@NotNull Project project, @NotNull String blockName, @NotNull Collection<VirtualFile> virtualFiles) { return FileBasedIndex.getInstance() .getValues(TwigBlockIndexExtension.KEY, "block", GlobalSearchScope.filesScope(project, virtualFiles)) .stream() .anyMatch(block -> block.contains(blockName)); } }
@NotNull public static Collection<Route> getRoute(@NotNull Project project, @NotNull String routeName) { Map<String, Route> compiledRoutes = RouteHelper.getCompiledRoutes(project); if(compiledRoutes.containsKey(routeName)) { return Collections.singletonList(compiledRoutes.get(routeName)); } Collection<Route> routes = new ArrayList<>(); Collection<VirtualFile> routeFiles = FileBasedIndex.getInstance().getContainingFiles(RoutesStubIndex.KEY, routeName, GlobalSearchScope.allScope(project)); for(StubIndexedRoute route: FileBasedIndex.getInstance().getValues(RoutesStubIndex.KEY, routeName, GlobalSearchScope.filesScope(project, routeFiles))) { routes.add(new Route(route)); } return routes; }
.getValues(TranslationStubIndex.KEY, domain, GlobalSearchScope.filesScope(project, Collections.singletonList(virtualFile))).stream() .filter(string -> string.contains(translationKey)).map(string -> psiFile) .collect(Collectors.toList())
protected static GlobalSearchScope createFileScope(@NotNull Project project, String fileName) { Collection<VirtualFile> files = FilenameIndex.getVirtualFilesByName(project, fileName, GlobalSearchScope.allScope(project)); if (!files.isEmpty()) { return GlobalSearchScope.filesScope(project, files); } return GlobalSearchScope.EMPTY_SCOPE; } }
public static GlobalSearchScope includedFilesUnionScope(PsiFile source) { List<VirtualFile> scopes = Lists.newLinkedList(); scopes.add(source.getVirtualFile()); Set<PsiFile> includedFiles = findIncludedFiles(source, true, true); for (PsiFile file : includedFiles) { scopes.add(file.getVirtualFile()); } return GlobalSearchScope.filesScope(source.getProject(), scopes); } }
public static GlobalSearchScope getElementGlobalSearchScope(BashPsiElement element, Project project) { PsiFile psiFile = BashPsiUtils.findFileContext(element); GlobalSearchScope currentFileScope = GlobalSearchScope.fileScope(psiFile); Set<PsiFile> includedFiles = FileInclusionManager.findIncludedFiles(psiFile, true, true); Collection<VirtualFile> files = Collections2.transform(includedFiles, psiToVirtualFile()); return currentFileScope.uniteWith(GlobalSearchScope.filesScope(project, files)); }
return GlobalSearchScope.fileScope(currentFile).union(GlobalSearchScope.filesScope(project, virtualFiles));
public static GlobalSearchScope varDefSearchScope(BashVar reference, boolean withIncludedFiles) { PsiFile referenceFile = BashPsiUtils.findFileContext(reference); if (!withIncludedFiles) { return GlobalSearchScope.fileScope(referenceFile.getProject(), referenceFile.getVirtualFile()); } Set<VirtualFile> result = Sets.newLinkedHashSet(); result.add(referenceFile.getVirtualFile()); int referenceFileOffset = BashPsiUtils.getFileTextOffset(reference); BashFunctionDef referenceFunctionContainer = BashPsiUtils.findNextVarDefFunctionDefScope(reference); for (BashIncludeCommand command : BashPsiUtils.findIncludeCommands(referenceFile, null)) { boolean includeIsInFunction = BashPsiUtils.findNextVarDefFunctionDefScope(command) != null; //either one of var or include command is in a function or the var is used after the include command if (referenceFunctionContainer != null || includeIsInFunction || (referenceFileOffset > BashPsiUtils.getFileTextEndOffset(command))) { BashFileReference fileReference = command.getFileReference(); PsiFile includedFile = fileReference != null ? fileReference.findReferencedFile() : null; if (includedFile != null) { result.add(includedFile.getVirtualFile()); //also, add all files included in the valid include command's file for (PsiFile file : BashPsiUtils.findIncludedFiles(includedFile, true)) { result.add(file.getVirtualFile()); } } } } return GlobalSearchScope.filesScope(referenceFile.getProject(), result); }