Split PsiSearchHelper and PsiTodoSearchHelper

This commit is contained in:
Evgeny Pasynkov
2012-06-13 11:05:01 +02:00
parent 9dba2dc906
commit 68a9812a88
15 changed files with 179 additions and 112 deletions
@@ -233,7 +233,7 @@ public class UpdateCacheTest extends PsiTestCase{
}
public void testAddExcludeRoot() throws Exception{
PsiSearchHelper.SERVICE.getInstance(myProject).findFilesWithTodoItems(); // to initialize caches
PsiTodoSearchHelper.SERVICE.getInstance(myProject).findFilesWithTodoItems(); // to initialize caches
ProjectRootManagerEx rootManager = (ProjectRootManagerEx)ProjectRootManager.getInstance(myProject);
final VirtualFile root = rootManager.getContentRoots()[0];
@@ -292,7 +292,7 @@ public class UpdateCacheTest extends PsiTestCase{
});
PsiSearchHelper.SERVICE.getInstance(myProject).findFilesWithTodoItems(); // to initialize caches
PsiTodoSearchHelper.SERVICE.getInstance(myProject).findFilesWithTodoItems(); // to initialize caches
new WriteCommandAction.Simple(getProject()) {
@Override
@@ -304,7 +304,7 @@ public class UpdateCacheTest extends PsiTestCase{
PsiDocumentManager.getInstance(myProject).commitAllDocuments();
PsiSearchHelper.SERVICE.getInstance(myProject).findFilesWithTodoItems(); // to update caches
PsiTodoSearchHelper.SERVICE.getInstance(myProject).findFilesWithTodoItems(); // to update caches
ApplicationManager.getApplication().runWriteAction(new Runnable() {
public void run() {
@@ -352,7 +352,7 @@ public class UpdateCacheTest extends PsiTestCase{
PsiDocumentManager.getInstance(myProject).commitAllDocuments();
PsiSearchHelper.SERVICE.getInstance(myProject).findFilesWithTodoItems(); // to initialize caches
PsiTodoSearchHelper.SERVICE.getInstance(myProject).findFilesWithTodoItems(); // to initialize caches
ApplicationManager.getApplication().runWriteAction(new Runnable() {
public void run() {
@@ -379,7 +379,7 @@ public class UpdateCacheTest extends PsiTestCase{
final ModuleRootManager rootManager = ModuleRootManager.getInstance(myModule);
final VirtualFile root = rootManager.getContentRoots()[0];
PsiSearchHelper.SERVICE.getInstance(myProject).findFilesWithTodoItems(); // to initialize caches
PsiTodoSearchHelper.SERVICE.getInstance(myProject).findFilesWithTodoItems(); // to initialize caches
new WriteCommandAction.Simple(getProject()) {
@Override
@@ -391,7 +391,7 @@ public class UpdateCacheTest extends PsiTestCase{
PsiDocumentManager.getInstance(myProject).commitAllDocuments();
PsiSearchHelper.SERVICE.getInstance(myProject).findFilesWithTodoItems(); // to update caches
PsiTodoSearchHelper.SERVICE.getInstance(myProject).findFilesWithTodoItems(); // to update caches
ApplicationManager.getApplication().runWriteAction(new Runnable() {
public void run() {
@@ -466,7 +466,7 @@ public class UpdateCacheTest extends PsiTestCase{
ProjectRootManagerEx rootManager = (ProjectRootManagerEx)ProjectRootManager.getInstance(myProject);
final VirtualFile root = rootManager.getContentRoots()[0];
PsiSearchHelper.SERVICE.getInstance(myProject).findFilesWithTodoItems(); // to initialize caches
PsiTodoSearchHelper.SERVICE.getInstance(myProject).findFilesWithTodoItems(); // to initialize caches
new WriteCommandAction.Simple(getProject()) {
@Override
@@ -478,7 +478,7 @@ public class UpdateCacheTest extends PsiTestCase{
PsiDocumentManager.getInstance(myProject).commitAllDocuments();
PsiSearchHelper.SERVICE.getInstance(myProject).findFilesWithTodoItems(); // to update caches
PsiTodoSearchHelper.SERVICE.getInstance(myProject).findFilesWithTodoItems(); // to update caches
ApplicationManager.getApplication().runWriteAction(new Runnable() {
public void run() {
@@ -530,7 +530,7 @@ public class UpdateCacheTest extends PsiTestCase{
}
private void checkTodos(@NonNls String[] expectedFiles){
PsiSearchHelper helper = PsiSearchHelper.SERVICE.getInstance(myProject);
PsiTodoSearchHelper helper = PsiTodoSearchHelper.SERVICE.getInstance(myProject);
PsiFile[] files = helper.findFilesWithTodoItems();
@@ -31,7 +31,7 @@ import org.jetbrains.annotations.Nullable;
*
* Use {@link com.intellij.psi.search.PsiSearchHelper.SERVICE#getInstance}() to get a search helper instance.
*/
public interface PsiSearchHelper extends PsiTodoSearchHelper {
public interface PsiSearchHelper {
class SERVICE {
private SERVICE() {
}
@@ -15,6 +15,8 @@
*/
package com.intellij.psi.search;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull;
@@ -24,6 +26,15 @@ import org.jetbrains.annotations.NotNull;
* Time: 10:08 AM
*/
public interface PsiTodoSearchHelper {
class SERVICE {
private SERVICE() {
}
public static PsiTodoSearchHelper getInstance(Project project) {
return ServiceManager.getService(project, PsiTodoSearchHelper.class);
}
}
/**
* Returns the list of all files in the project which have to do items.
*
@@ -61,7 +61,7 @@ import com.intellij.problems.WolfTheProblemSolver;
import com.intellij.psi.*;
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
import com.intellij.psi.impl.source.tree.injected.Place;
import com.intellij.psi.search.PsiSearchHelper;
import com.intellij.psi.search.PsiTodoSearchHelper;
import com.intellij.psi.search.TodoItem;
import com.intellij.psi.tree.IElementType;
import com.intellij.util.Processor;
@@ -778,7 +778,7 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP
@NotNull ProperTextRange priorityRange,
@NotNull Collection<HighlightInfo> result,
@NotNull Collection<HighlightInfo> outsideResult) {
PsiSearchHelper helper = PsiSearchHelper.SERVICE.getInstance(file.getProject());
PsiTodoSearchHelper helper = PsiTodoSearchHelper.SERVICE.getInstance(file.getProject());
TodoItem[] todoItems = helper.findTodoItems(file, startOffset, endOffset);
if (todoItems.length == 0) return;
@@ -18,7 +18,7 @@ package com.intellij.ide.todo;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.psi.PsiFile;
import com.intellij.psi.search.PsiSearchHelper;
import com.intellij.psi.search.PsiTodoSearchHelper;
import com.intellij.psi.search.TodoPattern;
import org.jdom.Element;
import org.jetbrains.annotations.NonNls;
@@ -52,7 +52,7 @@ public class TodoFilter implements Cloneable{
* @return <code>true</code> if and only if specified <code>psiFile</code> has
* <code>TodoItem</code>s accepted by the filter.
*/
public boolean accept(PsiSearchHelper searchHelper,PsiFile psiFile){
public boolean accept(PsiTodoSearchHelper searchHelper,PsiFile psiFile){
for(Iterator<TodoPattern> i=iterator();i.hasNext();){
TodoPattern todoPattern= i.next();
if(searchHelper.getTodoItemsCount(psiFile,todoPattern)>0){
@@ -42,7 +42,7 @@ import com.intellij.openapi.vcs.FileStatusListener;
import com.intellij.openapi.vcs.FileStatusManager;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.search.PsiSearchHelper;
import com.intellij.psi.search.PsiTodoSearchHelper;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.usageView.UsageTreeColorsScheme;
import com.intellij.util.containers.HashMap;
@@ -77,7 +77,7 @@ public abstract class TodoTreeBuilder extends AbstractTreeBuilder {
protected final HashMap<VirtualFile, EditorHighlighter> myFile2Highlighter;
protected final PsiSearchHelper mySearchHelper;
protected final PsiTodoSearchHelper mySearchHelper;
/**
* If this flag is false then the updateTree() method does nothing. But when
* the flag becomes true and myDirtyFileSet isn't empty the update is invoked.
@@ -99,7 +99,7 @@ public abstract class TodoTreeBuilder extends AbstractTreeBuilder {
myFile2Highlighter = new HashMap<VirtualFile, EditorHighlighter>();
PsiManager psiManager = PsiManager.getInstance(myProject);
mySearchHelper = PsiSearchHelper.SERVICE.getInstance(myProject);
mySearchHelper = PsiTodoSearchHelper.SERVICE.getInstance(myProject);
psiManager.addPsiTreeChangeListener(new MyPsiTreeChangeListener());
myFileStatusListener = new MyFileStatusListener();
@@ -23,7 +23,6 @@ import com.intellij.ide.util.treeView.NodeDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiFile;
import com.intellij.psi.search.PsiSearchHelper;
import com.intellij.psi.search.PsiTodoSearchHelper;
import com.intellij.psi.search.TodoPattern;
@@ -44,7 +43,7 @@ public abstract class TodoTreeStructure extends AbstractTreeStructureBase implem
private boolean myAreModulesShown;
protected final PsiSearchHelper mySearchHelper;
protected final PsiTodoSearchHelper mySearchHelper;
/**
* Current <code>TodoFilter</code>. If no filter is set then this field is <code>null</code>.
*/
@@ -54,7 +53,7 @@ public abstract class TodoTreeStructure extends AbstractTreeStructureBase implem
super(project);
myArePackagesShown=true;
mySummaryElement=new ToDoSummary();
mySearchHelper= PsiSearchHelper.SERVICE.getInstance(project);
mySearchHelper= PsiTodoSearchHelper.SERVICE.getInstance(project);
}
final void setTreeBuilder(TodoTreeBuilder builder){
@@ -43,7 +43,7 @@ import com.intellij.psi.PsiManager;
import com.intellij.psi.impl.search.LightIndexPatternSearch;
import com.intellij.psi.impl.search.TodoItemsCreator;
import com.intellij.psi.search.IndexPatternOccurrence;
import com.intellij.psi.search.PsiSearchHelper;
import com.intellij.psi.search.PsiTodoSearchHelper;
import com.intellij.psi.search.TodoItem;
import com.intellij.psi.search.searches.IndexPatternSearch;
import com.intellij.util.PairConsumer;
@@ -65,7 +65,7 @@ public class TodoCheckinHandlerWorker {
private final TodoFilter myTodoFilter;
private final boolean myIncludePattern;
private final PsiManager myPsiManager;
private final PsiSearchHelper mySearchHelper;
private final PsiTodoSearchHelper mySearchHelper;
private final List<TodoItem> myAddedOrEditedTodos;
private final List<TodoItem> myInChangedTodos;
@@ -81,7 +81,7 @@ public class TodoCheckinHandlerWorker {
myTodoFilter = todoFilter;
myIncludePattern = includePattern;
myPsiManager = PsiManager.getInstance(project);
mySearchHelper = PsiSearchHelper.SERVICE.getInstance(project);
mySearchHelper = PsiTodoSearchHelper.SERVICE.getInstance(project);
myAddedOrEditedTodos = new ArrayList<TodoItem>();
myInChangedTodos = new ArrayList<TodoItem>();
mySkipped = new SmartList<Pair<FilePath,String>>();
@@ -18,7 +18,6 @@ package com.intellij.psi.impl.search;
import com.intellij.codeInsight.CommentUtil;
import com.intellij.concurrency.JobUtil;
import com.intellij.ide.todo.TodoIndexPatternProvider;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.application.ReadActionProcessor;
@@ -28,7 +27,10 @@ import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.roots.FileIndexFacade;
import com.intellij.openapi.util.*;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.NullableComputable;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
@@ -38,7 +40,6 @@ import com.intellij.psi.impl.cache.impl.IndexCacheManagerImpl;
import com.intellij.psi.impl.cache.impl.id.IdIndex;
import com.intellij.psi.impl.cache.impl.id.IdIndexEntry;
import com.intellij.psi.search.*;
import com.intellij.psi.search.searches.IndexPatternSearch;
import com.intellij.psi.util.PsiUtilBase;
import com.intellij.util.CommonProcessors;
import com.intellij.util.Processor;
@@ -60,7 +61,6 @@ public class PsiSearchHelperImpl implements PsiSearchHelper {
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.search.PsiSearchHelperImpl");
private final PsiManagerEx myManager;
private static final TodoItem[] EMPTY_TODO_ITEMS = new TodoItem[0];
@Override
@NotNull
@@ -80,81 +80,6 @@ public class PsiSearchHelperImpl implements PsiSearchHelper {
myManager = manager;
}
@Override
@NotNull
public PsiFile[] findFilesWithTodoItems() {
return CacheManager.SERVICE.getInstance(myManager.getProject()).getFilesWithTodoItems();
}
@Override
@NotNull
public TodoItem[] findTodoItems(@NotNull PsiFile file) {
return findTodoItems(file, 0, file.getTextLength());
}
@Override
@NotNull
public TodoItem[] findTodoItems(@NotNull PsiFile file, int startOffset, int endOffset) {
final Collection<IndexPatternOccurrence> occurrences = IndexPatternSearch.search(file, TodoIndexPatternProvider.getInstance()).findAll();
if (occurrences.isEmpty()) {
return EMPTY_TODO_ITEMS;
}
return processTodoOccurences(startOffset, endOffset, occurrences);
}
private TodoItem[] processTodoOccurences(int startOffset, int endOffset, Collection<IndexPatternOccurrence> occurrences) {
List<TodoItem> items = new ArrayList<TodoItem>(occurrences.size());
TextRange textRange = new TextRange(startOffset, endOffset);
final TodoItemsCreator todoItemsCreator = new TodoItemsCreator();
for(IndexPatternOccurrence occurrence: occurrences) {
TextRange occurrenceRange = occurrence.getTextRange();
if (textRange.contains(occurrenceRange)) {
items.add(todoItemsCreator.createTodo(occurrence));
}
}
return items.toArray(new TodoItem[items.size()]);
}
@NotNull
@Override
public TodoItem[] findTodoItemsLight(@NotNull PsiFile file) {
return findTodoItemsLight(file, 0, file.getTextLength());
}
@NotNull
@Override
public TodoItem[] findTodoItemsLight(@NotNull PsiFile file, int startOffset, int endOffset) {
final Collection<IndexPatternOccurrence> occurrences =
LightIndexPatternSearch.SEARCH.createQuery(new IndexPatternSearch.SearchParameters(file, TodoIndexPatternProvider.getInstance())).findAll();
if (occurrences.isEmpty()) {
return EMPTY_TODO_ITEMS;
}
return processTodoOccurences(startOffset, endOffset, occurrences);
}
@Override
public int getTodoItemsCount(@NotNull PsiFile file) {
int count = CacheManager.SERVICE.getInstance(myManager.getProject()).getTodoCount(file.getVirtualFile(), TodoIndexPatternProvider.getInstance());
if (count != -1) return count;
return findTodoItems(file).length;
}
@Override
public int getTodoItemsCount(@NotNull PsiFile file, @NotNull TodoPattern pattern) {
int count = CacheManager.SERVICE.getInstance(myManager.getProject()).getTodoCount(file.getVirtualFile(), pattern.getIndexPattern());
if (count != -1) return count;
TodoItem[] items = findTodoItems(file);
count = 0;
for (TodoItem item : items) {
if (item.getPattern().equals(pattern)) count++;
}
return count;
}
@Override
@NotNull
public PsiElement[] findCommentsContainingIdentifier(@NotNull String identifier, @NotNull SearchScope searchScope) {
@@ -0,0 +1,131 @@
/*
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.psi.impl.search;
import com.intellij.ide.todo.TodoIndexPatternProvider;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiFile;
import com.intellij.psi.impl.PsiManagerEx;
import com.intellij.psi.impl.cache.CacheManager;
import com.intellij.psi.impl.cache.impl.id.IdIndexEntry;
import com.intellij.psi.search.IndexPatternOccurrence;
import com.intellij.psi.search.PsiTodoSearchHelper;
import com.intellij.psi.search.TodoItem;
import com.intellij.psi.search.TodoPattern;
import com.intellij.psi.search.searches.IndexPatternSearch;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class PsiTodoSearchHelperImpl implements PsiTodoSearchHelper {
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.search.PsiTodoSearchHelperImpl");
private final PsiManagerEx myManager;
private static final TodoItem[] EMPTY_TODO_ITEMS = new TodoItem[0];
public PsiTodoSearchHelperImpl(PsiManagerEx manager) {
myManager = manager;
}
@Override
@NotNull
public PsiFile[] findFilesWithTodoItems() {
return CacheManager.SERVICE.getInstance(myManager.getProject()).getFilesWithTodoItems();
}
@Override
@NotNull
public TodoItem[] findTodoItems(@NotNull PsiFile file) {
return findTodoItems(file, 0, file.getTextLength());
}
@Override
@NotNull
public TodoItem[] findTodoItems(@NotNull PsiFile file, int startOffset, int endOffset) {
final Collection<IndexPatternOccurrence> occurrences = IndexPatternSearch.search(file, TodoIndexPatternProvider.getInstance()).findAll();
if (occurrences.isEmpty()) {
return EMPTY_TODO_ITEMS;
}
return processTodoOccurences(startOffset, endOffset, occurrences);
}
private TodoItem[] processTodoOccurences(int startOffset, int endOffset, Collection<IndexPatternOccurrence> occurrences) {
List<TodoItem> items = new ArrayList<TodoItem>(occurrences.size());
TextRange textRange = new TextRange(startOffset, endOffset);
final TodoItemsCreator todoItemsCreator = new TodoItemsCreator();
for(IndexPatternOccurrence occurrence: occurrences) {
TextRange occurrenceRange = occurrence.getTextRange();
if (textRange.contains(occurrenceRange)) {
items.add(todoItemsCreator.createTodo(occurrence));
}
}
return items.toArray(new TodoItem[items.size()]);
}
@NotNull
@Override
public TodoItem[] findTodoItemsLight(@NotNull PsiFile file) {
return findTodoItemsLight(file, 0, file.getTextLength());
}
@NotNull
@Override
public TodoItem[] findTodoItemsLight(@NotNull PsiFile file, int startOffset, int endOffset) {
final Collection<IndexPatternOccurrence> occurrences =
LightIndexPatternSearch.SEARCH.createQuery(new IndexPatternSearch.SearchParameters(file, TodoIndexPatternProvider.getInstance())).findAll();
if (occurrences.isEmpty()) {
return EMPTY_TODO_ITEMS;
}
return processTodoOccurences(startOffset, endOffset, occurrences);
}
@Override
public int getTodoItemsCount(@NotNull PsiFile file) {
int count = CacheManager.SERVICE.getInstance(myManager.getProject()).getTodoCount(file.getVirtualFile(), TodoIndexPatternProvider.getInstance());
if (count != -1) return count;
return findTodoItems(file).length;
}
@Override
public int getTodoItemsCount(@NotNull PsiFile file, @NotNull TodoPattern pattern) {
int count = CacheManager.SERVICE.getInstance(myManager.getProject()).getTodoCount(file.getVirtualFile(), pattern.getIndexPattern());
if (count != -1) return count;
TodoItem[] items = findTodoItems(file);
count = 0;
for (TodoItem item : items) {
if (item.getPattern().equals(pattern)) count++;
}
return count;
}
private static ArrayList<IdIndexEntry> getWordEntries(String name, boolean caseSensitively) {
List<String> words = StringUtil.getWordsInStringLongestFirst(name);
final ArrayList<IdIndexEntry> keys = new ArrayList<IdIndexEntry>();
for (String word : words) {
keys.add(new IdIndexEntry(word, caseSensitively));
}
return keys;
}
}
@@ -19,7 +19,7 @@ import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Getter;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.search.PsiSearchHelper;
import com.intellij.psi.search.PsiTodoSearchHelper;
import com.intellij.psi.search.TodoItem;
import com.intellij.util.Consumer;
@@ -51,7 +51,7 @@ public class TodoForBaseRevision extends TodoForRanges {
protected TodoItem[] getTodoItems() {
final TodoItem[] items = (TodoItem[])myGetter.get();
if (items != null) return items;
final TodoItem[] todoItems = getTodoForText(PsiSearchHelper.SERVICE.getInstance(myProject));
final TodoItem[] todoItems = getTodoForText(PsiTodoSearchHelper.SERVICE.getInstance(myProject));
if (todoItems != null) {
mySaver.consume(todoItems);
}
@@ -16,16 +16,14 @@
package com.intellij.openapi.vcs.changes;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiFileFactory;
import com.intellij.psi.PsiManager;
import com.intellij.psi.search.PsiSearchHelper;
import com.intellij.psi.search.PsiTodoSearchHelper;
import com.intellij.psi.search.TodoItem;
import java.util.List;
@@ -53,7 +51,7 @@ public class TodoForExistingFile extends TodoForRanges {
return ApplicationManager.getApplication().runReadAction(new Computable<TodoItem[]>() {
@Override
public TodoItem[] compute() {
final PsiSearchHelper helper = PsiSearchHelper.SERVICE.getInstance(myProject);
final PsiTodoSearchHelper helper = PsiTodoSearchHelper.SERVICE.getInstance(myProject);
PsiFile psiFile = myFile == null ? null : PsiManager.getInstance(myProject).findFile(myFile);
if (psiFile != null) {
@@ -26,7 +26,7 @@ import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.vcs.checkin.StepIntersection;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiFileFactory;
import com.intellij.psi.search.PsiSearchHelper;
import com.intellij.psi.search.PsiTodoSearchHelper;
import com.intellij.psi.search.TodoItem;
import com.intellij.util.containers.Convertor;
@@ -104,7 +104,7 @@ public abstract class TodoForRanges {
protected abstract TodoItem[] getTodoItems();
protected TodoItem[] getTodoForText(PsiSearchHelper helper) {
protected TodoItem[] getTodoForText(PsiTodoSearchHelper helper) {
final PsiFile psiFile = ApplicationManager.getApplication().runReadAction(new Computable<PsiFile>() {
@Override
public PsiFile compute() {
@@ -73,6 +73,9 @@
<projectService serviceInterface="com.intellij.psi.search.PsiSearchHelper"
serviceImplementation="com.intellij.psi.impl.search.PsiSearchHelperImpl"/>
<projectService serviceInterface="com.intellij.psi.search.PsiTodoSearchHelper"
serviceImplementation="com.intellij.psi.impl.search.PsiTodoSearchHelperImpl"/>
<projectService serviceInterface="com.intellij.codeInsight.lookup.LookupManager"
serviceImplementation="com.intellij.codeInsight.lookup.impl.LookupManagerImpl"/>
@@ -18,7 +18,7 @@ package com.siyeh.ig.maturity;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiComment;
import com.intellij.psi.PsiFile;
import com.intellij.psi.search.PsiSearchHelper;
import com.intellij.psi.search.PsiTodoSearchHelper;
import com.intellij.psi.search.TodoItem;
public class TodoUtil {
@@ -28,7 +28,7 @@ public class TodoUtil {
public static boolean isTodoComment(PsiComment comment) {
final PsiFile file = comment.getContainingFile();
final PsiSearchHelper searchHelper = PsiSearchHelper.SERVICE.getInstance(comment.getProject());
final PsiTodoSearchHelper searchHelper = PsiTodoSearchHelper.SERVICE.getInstance(comment.getProject());
final TodoItem[] todoItems = searchHelper.findTodoItems(file);
for (final TodoItem todoItem : todoItems) {
final TextRange commentTextRange = comment.getTextRange();