diff --git a/python/src/com/jetbrains/python/psi/impl/PyPresentableElementImpl.java b/python/src/com/jetbrains/python/psi/impl/PyPresentableElementImpl.java index ffd6d85131e6..146619511546 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyPresentableElementImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyPresentableElementImpl.java @@ -3,13 +3,12 @@ package com.jetbrains.python.psi.impl; import com.intellij.lang.ASTNode; import com.intellij.navigation.ItemPresentation; import com.intellij.openapi.editor.colors.TextAttributesKey; -import com.intellij.openapi.vcs.impl.ExcludedFileIndex; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiNamedElement; import com.intellij.psi.stubs.IStubElementType; import com.intellij.psi.stubs.StubElement; +import com.jetbrains.python.psi.resolve.ResolveImportUtil; import javax.swing.*; @@ -52,16 +51,13 @@ public abstract class PyPresentableElementImpl extends Py protected static String getPackageForFile(final PsiFile containingFile) { final VirtualFile vFile = containingFile.getVirtualFile(); - StringBuilder result = new StringBuilder(vFile != null ? vFile.getNameWithoutExtension() : containingFile.getName()); - PsiDirectory dir = containingFile.getContainingDirectory(); - while(dir != null) { - if (!ExcludedFileIndex.getInstance(containingFile.getProject()).isInContent(dir.getVirtualFile())) { - break; + + if (vFile != null) { + final String importableName = ResolveImportUtil.findShortestImportableName(containingFile, vFile); + if (importableName != null) { + return importableName; } - if (dir.findFile("__init__.py") == null) break; - result.insert(0, dir.getName() + "."); - dir = dir.getParentDirectory(); } - return result.toString(); + return ""; } }