in src/org/jetbrains/plugins/ipnb/psi/IpnbSearchExecutor.java [25:55]
public void processQuery(@NotNull final ReferencesSearch.SearchParameters queryParameters, @NotNull final Processor<? super PsiReference> consumer) {
final SearchScope scope = queryParameters.getEffectiveSearchScope();
if (scope instanceof LocalSearchScope) return;
final PsiElement element = queryParameters.getElementToSearch();
if (!(element instanceof IpnbPyTargetExpression) && !(element instanceof IpnbPyFunction)) {
return;
}
final PsiFile file = element.getContainingFile();
if (file instanceof IpnbPyFragment) {
final IpnbFilePanel panel = ((IpnbPyFragment)file).getFilePanel();
final List<IpnbEditablePanel> panels = panel.getIpnbPanels();
for (IpnbEditablePanel editablePanel : panels) {
if (!(editablePanel instanceof IpnbCodePanel)) continue;
final Editor editor = ((IpnbCodePanel)editablePanel).getEditor();
final IpnbPyFragment psiFile = (IpnbPyFragment)PsiDocumentManager.getInstance(element.getProject()).getPsiFile(editor.getDocument());
if (psiFile == null) continue;
psiFile.accept(new PyRecursiveElementVisitor() {
@Override
public void visitPyElement(PyElement node) {
super.visitElement(node);
final PsiReference reference = node.getReference();
if (reference == null) return;
if (element.equals(reference.resolve())) {
consumer.process(reference);
}
}
});
}
}
}