@NotNull public static GlobalSearchScope moduleScopeWithoutLibraries(@NotNull Project project, @Nullable Module module) { return module != null ? GlobalSearchScope.moduleWithDependenciesScope(module).uniteWith(module.getModuleContentWithDependenciesScope()) : GlobalSearchScope.projectScope(project); }
GlobalSearchScope scope = GlobalSearchScope.projectScope(project);
@Override public PsiElement getDocumentationElementForLink(PsiManager psiManager, String link, PsiElement context) { if (context != null && !DumbService.isDumb(psiManager.getProject())) { // it's important to ask module on file, otherwise module won't be found for elements in libraries files [zolotov] Module module = ModuleUtilCore.findModuleForPsiElement(context.getContainingFile()); int hash = link.indexOf('#'); String importPath = hash >= 0 ? link.substring(0, hash) : link; Project project = psiManager.getProject(); VirtualFile directory = GoPackageUtil.findByImportPath(importPath, project, module); PsiDirectory psiDirectory = directory != null ? psiManager.findDirectory(directory) : null; String anchor = hash >= 0 ? link.substring(Math.min(hash + 1, link.length())) : null; if (StringUtil.isNotEmpty(anchor)) { GlobalSearchScope scope = psiDirectory != null ? GoPackageUtil.packageScope(psiDirectory, null) : GlobalSearchScope.projectScope(project); IdFilter idFilter = GoIdFilter.getFilesFilter(scope); GoNamedElement element = ContainerUtil.getFirstItem(StubIndex.getElements(GoAllPublicNamesIndex.ALL_PUBLIC_NAMES, anchor, project, scope, idFilter, GoNamedElement.class)); if (element != null) { return element; } return ContainerUtil.getFirstItem(StubIndex.getElements(GoAllPrivateNamesIndex.ALL_PRIVATE_NAMES, anchor, project, scope, idFilter, GoNamedElement.class)); } else { return psiDirectory; } } return super.getDocumentationElementForLink(psiManager, link, context); }
final GlobalSearchScope scope = GlobalSearchScope.projectScope(project); final String[] parts = MatcherUtil.getParts(pattern);
@NotNull private GlobalSearchScope getSearchScope(Project project, boolean includeNonProjectItems) { if (includeNonProjectItems) { return GlobalSearchScope.allScope(project); } else { return GlobalSearchScope.projectScope(project); } }
public static List<PerlNamespaceDefinitionElement> getMasonNamespacesByAbsolutePath(@NotNull Project project, @NotNull String absolutePath) { return new ArrayList<>( StubIndex.getElements( MasonNamespaceDefitnitionsStubIndex.KEY, absolutePath, project, GlobalSearchScope.projectScope(project), MasonNamespaceDefinition.class ) ); }
@NotNull @Override public NavigationItem[] getItemsByName(String packageName, String searchTerm, Project project, boolean includeNonProjectItems) { Collection<PerlNamespaceDefinitionElement> result = PerlPackageUtil.getNamespaceDefinitions( project, packageName, (includeNonProjectItems ? GlobalSearchScope.allScope(project) : GlobalSearchScope.projectScope(project)) ); //noinspection SuspiciousToArrayCall return result.toArray(new NavigationItem[result.size()]); } }
@NotNull @Override public NavigationItem[] getItemsByName(String name, String pattern, Project project, boolean includeNonProjectItems) { Collection<PerlSubDefinitionElement> result = PerlSubUtil.getSubDefinitions( project, name, (includeNonProjectItems ? GlobalSearchScope.allScope(project) : GlobalSearchScope.projectScope(project)) ); //noinspection SuspiciousToArrayCall return result.toArray(new NavigationItem[result.size()]); } }
@NotNull @Override public NavigationItem[] getItemsByName(final String name, final String pattern, final Project project, final boolean includeNonProjectItems) { final GlobalSearchScope scope = includeNonProjectItems ? GlobalSearchScope.allScope(project) : GlobalSearchScope.projectScope(project); final Collection<DNamedElement> classes = StubIndex.getElements(DAllNameIndex.KEY, name, project, scope, DNamedElement.class); final List<NavigationItem> items = ContainerUtil.newArrayListWithCapacity(classes.size()); items.addAll(classes); return items.toArray(new NavigationItem[items.size()]); } }
@NotNull public static List<PerlNamespaceDefinitionElement> collectNamespaceDefinitions(@NotNull Project project, @NotNull List<String> packageNames) { ArrayList<PerlNamespaceDefinitionElement> namespaceDefinitions = new ArrayList<>(); for (String packageName : packageNames) { Collection<PerlNamespaceDefinitionElement> list = getNamespaceDefinitions(project, packageName, GlobalSearchScope.projectScope(project)); if (list.isEmpty()) { list = getNamespaceDefinitions(project, packageName, GlobalSearchScope.allScope(project)); } namespaceDefinitions.addAll(list); } return namespaceDefinitions; }
@NotNull @Override public NavigationItem[] getItemsByName(final String name, final String pattern, final Project project, final boolean includeNonProjectItems) { final GlobalSearchScope scope = includeNonProjectItems ? GlobalSearchScope.allScope(project) : GlobalSearchScope.projectScope(project); final Collection<DNamedElement> result = StubIndex.getElements(DAllNameIndex.KEY, name, project, scope, DNamedElement.class); final List<NavigationItem> items = ContainerUtil.newArrayListWithCapacity(result.size()); for (final DNamedElement element : result) { if(element.getParent().getClass() == DLanguageClassDeclarationImpl.class || element.getClass() == DlangEnumDeclarationImpl.class || element.getClass() == DlangStructDeclarationImpl.class) { items.add(element); } } return items.toArray(new NavigationItem[items.size()]); }
@Override public void visitSubDeclarationElement(@NotNull PerlSubDeclarationElement o) { Project project = o.getProject(); String canonicalName = o.getCanonicalName(); if (PerlSubUtil.getSubDeclarations(project, canonicalName, GlobalSearchScope.projectScope(project)).size() > 1) { registerProblem(holder, o.getNameIdentifier(), "Multiple subs declarations found"); } } };
@Override public void visitSubDeclarationElement(@NotNull PerlSubDeclarationElement o) { PsiElement subNameElement = o.getNameIdentifier(); if (subNameElement != null && !EXCLUSIONS.contains(o.getName()) && ReferencesSearch.search(o, GlobalSearchScope.projectScope(o.getProject())).findFirst() == null) { holder.registerProblem(subNameElement, "Unused sub declaration", ProblemHighlightType.LIKE_UNUSED_SYMBOL); } } };
@Nullable private VirtualFile fileForClass() { PsiClass clazz = JavaPsiFacade.getInstance(project).findClass(className, projectScope(project)); if ((clazz != null) && (clazz.getContainingFile() != null)) { return clazz.getContainingFile().getVirtualFile(); } return null; } }
@Override public void visitPerlSubDefinitionElement(@NotNull PerlSubDefinitionElement o) { PsiElement subNameElement = o.getNameIdentifier(); if (subNameElement != null && !EXCLUSIONS.contains(o.getName()) && ReferencesSearch.search(o, GlobalSearchScope.projectScope(o.getProject())).findFirst() == null) { holder.registerProblem(subNameElement, "Unused sub definition", ProblemHighlightType.LIKE_UNUSED_SYMBOL); } }
@Override public void visitGlobVariable(@NotNull PsiPerlGlobVariable o) { if ((o.getExplicitPackageName() != null || !PerlGlobUtil.BUILT_IN.contains(o.getName())) && ReferencesSearch.search(o, GlobalSearchScope.projectScope(o.getProject())).findFirst() == null) { holder.registerProblem(o, "Unused typeglob alias", ProblemHighlightType.LIKE_UNUSED_SYMBOL); } } };
@Override public void visitPerlNamespaceDefinitionWithIdentifier(@NotNull PerlNamespaceDefinitionWithIdentifier o) { Project project = o.getProject(); String packageName = o.getPackageName(); if (packageName != null && !PerlPackageUtil.MAIN_PACKAGE.equals(packageName) && PerlPackageUtil.getNamespaceDefinitions(project, o.getPackageName(), GlobalSearchScope.projectScope(project)).size() > 1 && o.getNameIdentifier() != null ) { registerProblem(holder, o.getNameIdentifier(), "Multiple namespace definitions found"); } } };
@Override public void visitPerlSubDefinitionElement(@NotNull PerlSubDefinitionElement o) { Project project = o.getProject(); String name = "Sub"; String canonicalName = o.getCanonicalName(); if (PerlSubUtil.getSubDefinitions(project, canonicalName, GlobalSearchScope.projectScope(project)).size() > 1) { if (!PerlPackageUtil.isMain(o.getPackageName()) || !PerlSharedSettings.getInstance(project).SIMPLE_MAIN_RESOLUTION) { registerProblem(holder, o.getNameIdentifier(), String.format("Multiple %ss definitions found", name.toLowerCase())); } } super.visitPerlSubDefinitionElement(o); } };
/** * Returns references to the given element. If it is a BashPsiElement a special search scope is used to locate the elements referencing the file. * * @param element References to the given element * @return */ @NotNull @Override public Collection<PsiReference> findReferences(PsiElement element) { //fixme fix the custom scope SearchScope scope = (element instanceof BashPsiElement) ? BashElementSharedImpl.getElementUseScope((BashPsiElement) element, element.getProject()) : GlobalSearchScope.projectScope(element.getProject()); Query<PsiReference> search = ReferencesSearch.search(element, scope); return search.findAll(); }
@NotNull @Override public ResolveResult[] multiResolve(final boolean incompleteCode) { final Project project = myElement.getProject(); final String modelName = ((XmlAttributeValue) myElement).getValue(); final String javaModelName = modelName + JAVA_MODEL_SUFFIX; final String jaloModelName = modelName; final PsiClass[] javaModelClasses = PsiShortNamesCache.getInstance(project).getClassesByName( javaModelName, GlobalSearchScope.allScope(project) ); final PsiClass[] jaloModelClasses = PsiShortNamesCache.getInstance(project).getClassesByName( jaloModelName, GlobalSearchScope.projectScope(project) ); final PsiClass[] psiClasses = ArrayUtil.mergeArrays(javaModelClasses, jaloModelClasses); return PsiElementResolveResult.createResults(psiClasses); }