collect project roots as well
authorSergey Simonchik <sergey.simonchik@jetbrains.com>
Thu, 10 Sep 2015 12:16:42 +0000 (15:16 +0300)
committerSergey Simonchik <sergey.simonchik@jetbrains.com>
Thu, 10 Sep 2015 12:17:05 +0000 (15:17 +0300)
platform/indexing-impl/src/com/intellij/util/indexing/AdditionalIndexableFileSet.java

index db62f5b709a7543711129c81d2f4cf2a1063e254..00df8c38367f82a417da1d33a9bcef0c6ae26aba 100644 (file)
@@ -16,6 +16,7 @@
 package com.intellij.util.indexing;
 
 import com.intellij.openapi.extensions.Extensions;
 package com.intellij.util.indexing;
 
 import com.intellij.openapi.extensions.Extensions;
+import com.intellij.openapi.project.Project;
 import com.intellij.openapi.roots.ContentIterator;
 import com.intellij.openapi.vfs.VfsUtilCore;
 import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.openapi.roots.ContentIterator;
 import com.intellij.openapi.vfs.VfsUtilCore;
 import com.intellij.openapi.vfs.VirtualFile;
@@ -29,15 +30,23 @@ import java.util.Set;
  * @author peter
  */
 public class AdditionalIndexableFileSet implements IndexableFileSet {
  * @author peter
  */
 public class AdditionalIndexableFileSet implements IndexableFileSet {
+  private final Project myProject;
   private volatile Set<VirtualFile> cachedFiles;
   private volatile Set<VirtualFile> cachedDirectories;
   private volatile IndexedRootsProvider[] myExtensions;
 
   private volatile Set<VirtualFile> cachedFiles;
   private volatile Set<VirtualFile> cachedDirectories;
   private volatile IndexedRootsProvider[] myExtensions;
 
+  public AdditionalIndexableFileSet(Project project, IndexedRootsProvider... extensions) {
+    myProject = project;
+    myExtensions = extensions;
+  }
+
   public AdditionalIndexableFileSet(IndexedRootsProvider... extensions) {
   public AdditionalIndexableFileSet(IndexedRootsProvider... extensions) {
+    myProject = null;
     myExtensions = extensions;
   }
 
   public AdditionalIndexableFileSet() {
     myExtensions = extensions;
   }
 
   public AdditionalIndexableFileSet() {
+    myProject = null;
   }
 
   private Set<VirtualFile> getDirectories() {
   }
 
   private Set<VirtualFile> getDirectories() {
@@ -58,6 +67,12 @@ public class AdditionalIndexableFileSet implements IndexableFileSet {
       for(VirtualFile file:IndexableSetContributor.getRootsToIndex(provider)) {
         (file.isDirectory() ? directories:files).add(file);
       }
       for(VirtualFile file:IndexableSetContributor.getRootsToIndex(provider)) {
         (file.isDirectory() ? directories:files).add(file);
       }
+      if (myProject != null) {
+        Set<VirtualFile> projectRoots = IndexableSetContributor.getProjectRootsToIndex(provider, myProject);
+        for (VirtualFile root : projectRoots) {
+          (root.isDirectory() ? directories : files).add(root);
+        }
+      }
     }
     cachedFiles = files;
     cachedDirectories = directories;
     }
     cachedFiles = files;
     cachedDirectories = directories;