From cfab7385414fc842a571ed99bf7dec25489a8134 Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Fri, 30 Jun 2017 19:15:48 +0200 Subject: [PATCH] Exclude site-packages from index (attempt) --- .../python/PyDirectoryIndexExcludePolicy.java | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/python/ide/src/com/jetbrains/python/PyDirectoryIndexExcludePolicy.java b/python/ide/src/com/jetbrains/python/PyDirectoryIndexExcludePolicy.java index 01dfbae6970b..6b75c5fb9107 100644 --- a/python/ide/src/com/jetbrains/python/PyDirectoryIndexExcludePolicy.java +++ b/python/ide/src/com/jetbrains/python/PyDirectoryIndexExcludePolicy.java @@ -16,12 +16,17 @@ package com.jetbrains.python; import com.google.common.collect.Lists; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.project.Project; +import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.roots.ModuleRootModel; +import com.intellij.openapi.roots.OrderRootType; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.roots.impl.DirectoryIndexExcludePolicy; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.pointers.VirtualFilePointer; +import com.jetbrains.python.sdk.PythonSdkType; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -30,10 +35,10 @@ import java.util.List; * @author traff */ public class PyDirectoryIndexExcludePolicy implements DirectoryIndexExcludePolicy { - + private final Project myProject; - public PyDirectoryIndexExcludePolicy(@NotNull Project project) { + public PyDirectoryIndexExcludePolicy(@NotNull Project project) { myProject = project; } @@ -41,13 +46,25 @@ public class PyDirectoryIndexExcludePolicy implements DirectoryIndexExcludePolic @Override public VirtualFile[] getExcludeRootsForProject() { List result = Lists.newArrayList(); - for (VirtualFile root: ProjectRootManager.getInstance(myProject).getContentRoots()) { + for (VirtualFile root : ProjectRootManager.getInstance(myProject).getContentRoots()) { VirtualFile file = root.findChild(".tox"); if (file != null) { result.add(file); } } - + + for (Module m : ModuleManager.getInstance(myProject).getModules()) { + Sdk sdk = PythonSdkType.findPythonSdk(m); + if (sdk != null) { + for (VirtualFile dir : sdk.getRootProvider().getFiles(OrderRootType.CLASSES)) { + VirtualFile sitePackages = dir.findChild("site-packages"); + if (sitePackages != null) { + result.add(sitePackages); + } + } + } + } + return result.toArray(new VirtualFile[result.size()]); }