@NotNull @Override protected TextRange getRangeToRename(@NotNull PsiElement element) { PsiElement namedElement = TargetElementUtil.getInstance().getNamedElement(element, 0); return namedElement instanceof PerlIdentifierRangeProvider ? ((PerlIdentifierRangeProvider)namedElement).getRangeInIdentifier() : ElementManipulators.getValueTextRange(element); }
@Override public List<PsiElement> getTargets() { PsiElement namedElement = TargetElementUtil.getInstance().getNamedElement(myElement, myAdjustedOffset - myElement.getNode().getStartOffset()); if (namedElement != null) { PsiReference reference = ReferencesSearch.search(namedElement, new LocalSearchScope(myFile)).findFirst();
@NotNull @Override public Tokenizer getTokenizer(PsiElement element) { IElementType elementType = PsiUtilCore.getElementType(element); if (elementType == POD_IDENTIFIER) { PsiElement namedElement = TargetElementUtil.getInstance().getNamedElement(element, 0); if (namedElement != null) { return EMPTY_TOKENIZER; } PsiFile podFile = element.getContainingFile().getViewProvider().getPsi(PodLanguage.INSTANCE); if (podFile == null) { return EMPTY_TOKENIZER; } PsiReference reference = podFile.findReferenceAt(element.getTextOffset()); return reference != null ? EMPTY_TOKENIZER : TEXT_TOKENIZER; } return super.getTokenizer(element); } }
@Nullable @Override protected PsiNamedElement getVariable() { PsiNamedElement variable = super.getVariable(); if (variable != null) { return variable; } if (!(myElementToRename instanceof PerlDelegatingLightNamedElement)) { return null; } PsiFile psiFile = PsiDocumentManager.getInstance(myProject).getPsiFile(myEditor.getDocument()); if (psiFile == null) { return null; } PsiElement psiLeaf = psiFile.getViewProvider().findElementAt(myRenameOffset.getStartOffset(), myElementToRename.getLanguage()); if (psiLeaf == null) { return null; } PsiElement namedElement = TargetElementUtil.getInstance().getNamedElement(psiLeaf, 0); if (namedElement instanceof PerlDelegatingLightNamedElement) { return (PsiNamedElement)namedElement; } return null; } }