diff --git a/platform/editor-ui-ex/src/com/intellij/psi/impl/cache/impl/todo/TodoIndex.java b/platform/editor-ui-ex/src/com/intellij/psi/impl/cache/impl/todo/TodoIndex.java index c1cdd5a5a7c4..6343123abc10 100644 --- a/platform/editor-ui-ex/src/com/intellij/psi/impl/cache/impl/todo/TodoIndex.java +++ b/platform/editor-ui-ex/src/com/intellij/psi/impl/cache/impl/todo/TodoIndex.java @@ -23,9 +23,6 @@ import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileTypeRegistry; import com.intellij.openapi.fileTypes.LanguageFileType; import com.intellij.openapi.fileTypes.impl.CustomSyntaxTableFileType; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.project.ProjectManager; -import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.impl.cache.impl.id.PlatformIdTableBuilding; @@ -50,7 +47,7 @@ import java.util.Map; /** * @author Eugene Zhuravlev - * Date: Jan 20, 2008 + * Date: Jan 20, 2008 */ public class TodoIndex extends FileBasedIndexExtension { @NonNls public static final ID NAME = ID.create("TodoIndex"); @@ -102,7 +99,7 @@ public class TodoIndex extends FileBasedIndexExtension private final DataIndexer myIndexer = new DataIndexer() { @Override @NotNull - public Map map(@NotNull final FileContent inputData) { + public Map map(@NotNull final FileContent inputData) { final VirtualFile file = inputData.getFile(); final DataIndexer indexer = PlatformIdTableBuilding .getTodoIndexer(inputData.getFileType(), file); @@ -114,13 +111,7 @@ public class TodoIndex extends FileBasedIndexExtension }; protected final FileBasedIndex.InputFilter myInputFilter = file -> { - if (!file.isInLocalFileSystem()) { - return false; // do not index TODOs in library sources - } - - if(!isInContentOfAnyProject(file)) { - return false; - } + if (!TodoIndexers.needsTodoIndex(file)) return false; final FileType fileType = file.getFileType(); @@ -135,22 +126,13 @@ public class TodoIndex extends FileBasedIndexExtension fileType instanceof CustomSyntaxTableFileType; }; - private static boolean isInContentOfAnyProject(@NotNull VirtualFile file) { - for (Project project : ProjectManager.getInstance().getOpenProjects()) { - if (ProjectFileIndex.getInstance(project).isInContent(file)) { - return true; - } - } - return false; - } - @Override public int getVersion() { int version = 10; FileType[] types = myFileTypeManager.getRegisteredFileTypes(); Arrays.sort(types, (o1, o2) -> Comparing.compare(o1.getName(), o2.getName())); - for(FileType fileType:types) { + for (FileType fileType : types) { DataIndexer indexer = TodoIndexers.INSTANCE.forFileType(fileType); if (indexer == null) continue; diff --git a/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/BaseFilterLexerUtil.java b/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/BaseFilterLexerUtil.java index f6c832841da5..7ff27e290b06 100644 --- a/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/BaseFilterLexerUtil.java +++ b/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/BaseFilterLexerUtil.java @@ -21,6 +21,7 @@ import com.intellij.psi.impl.cache.impl.id.IdIndexEntry; import com.intellij.psi.impl.cache.impl.id.IdTableBuilding; import com.intellij.psi.impl.cache.impl.id.LexingIdIndexer; import com.intellij.psi.impl.cache.impl.todo.TodoIndexEntry; +import com.intellij.psi.impl.cache.impl.todo.TodoIndexers; import com.intellij.psi.search.IndexPattern; import com.intellij.util.indexing.FileContent; import com.intellij.util.indexing.IdDataConsumer; @@ -39,7 +40,7 @@ public class BaseFilterLexerUtil { return data; } - final boolean needTodo = content.getFile().isInLocalFileSystem(); // same as TodoIndex.getFilter().isAcceptable + final boolean needTodo = TodoIndexers.needsTodoIndex(content.getFile()); final boolean needIdIndex = IdTableBuilding.getFileTypeIndexer(content.getFileType()) instanceof LexingIdIndexer; final IdDataConsumer consumer = needIdIndex? new IdDataConsumer():null; diff --git a/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/todo/TodoIndexers.java b/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/todo/TodoIndexers.java index a90b890532d1..2cc7c3768381 100644 --- a/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/todo/TodoIndexers.java +++ b/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/todo/TodoIndexers.java @@ -17,8 +17,13 @@ package com.intellij.psi.impl.cache.impl.todo; import com.intellij.openapi.fileTypes.FileTypeExtension; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectManager; +import com.intellij.openapi.roots.ProjectFileIndex; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.indexing.DataIndexer; import com.intellij.util.indexing.FileContent; +import org.jetbrains.annotations.NotNull; /** * @author yole @@ -29,4 +34,23 @@ public class TodoIndexers extends FileTypeExtension