diff --git a/python/ipnb/resources/META-INF/ipython-notebook.xml b/python/ipnb/resources/META-INF/ipython-notebook.xml
index ea2ac8ca0acf..1dbc44eb4753 100644
--- a/python/ipnb/resources/META-INF/ipython-notebook.xml
+++ b/python/ipnb/resources/META-INF/ipython-notebook.xml
@@ -19,6 +19,7 @@
+
panels = panel.getIpnbPanels();
+
+ for (IpnbEditablePanel editablePanel : panels) {
+ if (!(editablePanel instanceof IpnbCodePanel)) continue;
+ final Editor editor = ((IpnbCodePanel)editablePanel).getEditor();
+ final IpnbPyFragment psiFile = (IpnbPyFragment)PsiDocumentManager.getInstance(importNameDefiner.getProject()).getPsiFile(editor.getDocument());
+ if (psiFile == null) continue;
+ final MyVisitor visitor = new MyVisitor(importNameDefiner);
+ psiFile.accept(visitor);
+ if (visitor.used) return true;
+ }
+ }
+ return false;
+ }
+
+ private static class MyVisitor extends PyRecursiveElementVisitor {
+ private final PyImportedNameDefiner myImportNameDefiner;
+ boolean used = false;
+
+ public MyVisitor(PyImportedNameDefiner importNameDefiner) {
+ myImportNameDefiner = importNameDefiner;
+ }
+
+ @Override
+ public void visitPyElement(PyElement node) {
+ super.visitPyElement(node);
+ if (node instanceof PyReferenceOwner) {
+ final PyResolveContext resolveContext = PyResolveContext.noImplicits();
+ final PsiPolyVariantReference reference = ((PyReferenceOwner)node).getReference(resolveContext);
+ PsiElement target = null;
+ final ResolveResult[] resolveResults = reference.multiResolve(false);
+ for (ResolveResult resolveResult : resolveResults) {
+ if (target == null && resolveResult.isValidResult()) {
+ target = resolveResult.getElement();
+ }
+ if (resolveResult instanceof ImportedResolveResult) {
+ final PyImportedNameDefiner definer = ((ImportedResolveResult)resolveResult).getDefiner();
+ if (myImportNameDefiner.equals(definer)) {
+ used = true;
+ }
+ }
+ }
+ }
+ }
+ }
+}