private void handleNamedElement(final PsiNamedElement named) { String name = named.getName(); assert name != null; if (StructuralSearchUtil.isTypedVariable(name)) { name = name.substring(1, name.length() - 1); } if (!namedElements.containsKey(name)) namedElements.put(name, named); named.acceptChildren(this); }
public boolean execute( ReferencesSearch.SearchParameters params, final Processor<PsiReference> consumer) { final PsiElement elem = params.getElementToSearch(); SearchScope scope = params.getEffectiveSearchScope(); if (elem instanceof PsiNamedElement /* An optimization for Java refactorings */ && !(elem instanceof PsiVariable)) { final PsiNamedElement symbolToSearch = (PsiNamedElement) elem; final String name = symbolToSearch.getName(); if (name != null) { RequestResultProcessor processor = new RequestResultProcessor() { @Override public boolean processTextOccurrence( @NotNull PsiElement element, int offsetInElement, @NotNull Processor<PsiReference> consumer) { if (element instanceof ClSymbol) { ClSymbol refSymbol = (ClSymbol) element; for (PsiReference ref : refSymbol.getReferences()) { if (ref.getRangeInElement().contains(offsetInElement) && // atom may refer to definition or to the symbol in it (ref.resolve() == symbolToSearch || ref.resolve() == symbolToSearch.getParent())) { if (!consumer.process(ref)) return false; } } } return true; } }; if (scope instanceof GlobalSearchScope) { scope = GlobalSearchScope.getScopeRestrictedByFileTypes( (GlobalSearchScope) scope, ClojureFileType.CLOJURE_FILE_TYPE); } for (String word : StringUtil.getWordsIn(name)) { params.getOptimizer().searchWord(word, scope, UsageSearchContext.ANY, true, processor); } } } return true; }
public static boolean isTooExpensiveToSearch(PsiNamedElement element, boolean zeroResult) { final String name = element.getName(); if (name == null) { return true; } final ProgressManager progressManager = ProgressManager.getInstance(); final PsiSearchHelper searchHelper = PsiSearchHelper.SERVICE.getInstance(element.getProject()); final SearchScope useScope = element.getUseScope(); if (!(useScope instanceof GlobalSearchScope)) { return zeroResult; } final PsiSearchHelper.SearchCostResult cost = searchHelper.isCheapEnoughToSearch( name, (GlobalSearchScope) useScope, null, progressManager.getProgressIndicator()); if (cost == PsiSearchHelper.SearchCostResult.ZERO_OCCURRENCES) { return zeroResult; } return cost == PsiSearchHelper.SearchCostResult.TOO_MANY_OCCURRENCES; }
/** * Tries to produce signature for the exact given PSI element. * * @param element target element * @param buffer buffer to store the signature in * @return buffer that contains signature of the given element if it was produced; <code>null * </code> as an indication that signature for the given element was not produced */ @SuppressWarnings("unchecked") @Nullable private static StringBuilder getSignature( @NotNull PsiElement element, @Nullable StringBuilder buffer) { if (element instanceof PsiNamedElement) { PsiNamedElement named = (PsiNamedElement) element; final String name = named.getName(); if (StringUtil.isEmpty(name)) { return null; } int index = getChildIndex(named, element.getParent(), name, PsiNamedElement.class); StringBuilder bufferToUse = buffer; if (bufferToUse == null) { bufferToUse = new StringBuilder(); } bufferToUse .append(TYPE_MARKER) .append(ELEMENT_TOKENS_SEPARATOR) .append(escape(name)) .append(ELEMENT_TOKENS_SEPARATOR) .append(index); return bufferToUse; } if (element instanceof PsiComment) { PsiElement parent = element.getParent(); boolean nestedComment = false; if (parent instanceof PsiComment && parent.getTextRange().equals(element.getTextRange())) { parent = parent.getParent(); nestedComment = true; } if (parent instanceof PsiNamedElement && (nestedComment || parent.getFirstChild() == element)) { // Consider doc comment element that is the first child of named element to be a doc // comment. StringBuilder bufferToUse = buffer; if (bufferToUse == null) { bufferToUse = new StringBuilder(); } bufferToUse.append(TYPE_MARKER).append(ELEMENT_TOKENS_SEPARATOR).append(DOC_COMMENT_MARKER); return bufferToUse; } } PsiElement parent = element.getParent(); if (parent instanceof PsiNamedElement && !(parent instanceof PsiFile)) { if (isBlockElement(element)) { int index = getBlockElementIndex(element); StringBuilder bufferToUse = buffer; if (bufferToUse == null) { bufferToUse = new StringBuilder(); } bufferToUse.append(TYPE_MARKER).append(ELEMENT_TOKENS_SEPARATOR).append(CODE_BLOCK_MARKER); if (index > 0) { bufferToUse.append(ELEMENT_TOKENS_SEPARATOR).append(index); } return bufferToUse; } } return null; }
public DReference(@NotNull PsiNamedElement element, TextRange textRange) { super(element, textRange); name = element.getName(); }
protected TLSchemaNamedElementReferenceBase(PsiNamedElement element, TextRange rangeInElement) { super(element, rangeInElement); myName = element.getName(); }
public MemberInplaceRenamer( @NotNull PsiNamedElement elementToRename, PsiElement substituted, Editor editor) { this( elementToRename, substituted, editor, elementToRename.getName(), elementToRename.getName()); }