mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
RUBY-32066 add support for indexing __todo__ and including them inside the todo toolwindow
GitOrigin-RevId: ded92634b23201afdedfe07308795639b298bd1e
This commit is contained in:
committed by
intellij-monorepo-bot
parent
275a2aee05
commit
874b7d0da1
+25
-14
@@ -2,16 +2,12 @@
|
||||
package com.intellij.psi.impl.search;
|
||||
|
||||
import com.intellij.ide.todo.TodoConfiguration;
|
||||
import com.intellij.ide.todo.TodoIndexPatternProvider;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.impl.cache.TodoCacheManager;
|
||||
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.*;
|
||||
import com.intellij.psi.search.searches.IndexPatternSearch;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
@@ -48,8 +44,11 @@ public class PsiTodoSearchHelperImpl implements PsiTodoSearchHelper {
|
||||
|
||||
@Override
|
||||
public TodoItem @NotNull [] findTodoItems(@NotNull PsiFile file, int startOffset, int endOffset) {
|
||||
final Collection<IndexPatternOccurrence> occurrences =
|
||||
IndexPatternSearch.search(file, TodoIndexPatternProvider.getInstance(), TodoConfiguration.getInstance().isMultiLine()).findAll();
|
||||
final Collection<IndexPatternOccurrence> occurrences = new ArrayList<>();
|
||||
for (IndexPatternProvider provider : IndexPatternProvider.EP_NAME.getExtensionList()) {
|
||||
IndexPatternSearch.search(file, provider, TodoConfiguration.getInstance().isMultiLine()).forEach(occurrences::add);
|
||||
}
|
||||
|
||||
if (occurrences.isEmpty()) {
|
||||
return EMPTY_TODO_ITEMS;
|
||||
}
|
||||
@@ -81,10 +80,12 @@ public class PsiTodoSearchHelperImpl implements PsiTodoSearchHelper {
|
||||
|
||||
@Override
|
||||
public TodoItem @NotNull [] findTodoItemsLight(@NotNull PsiFile file, int startOffset, int endOffset) {
|
||||
final Collection<IndexPatternOccurrence> occurrences =
|
||||
final Collection<IndexPatternOccurrence> occurrences = new ArrayList<>();
|
||||
for (IndexPatternProvider provider : IndexPatternProvider.EP_NAME.getExtensionList()) {
|
||||
LightIndexPatternSearch.SEARCH.createQuery(
|
||||
new IndexPatternSearch.SearchParameters(file, TodoIndexPatternProvider.getInstance(), TodoConfiguration.getInstance().isMultiLine())
|
||||
).findAll();
|
||||
new IndexPatternSearch.SearchParameters(file, provider, TodoConfiguration.getInstance().isMultiLine())
|
||||
).forEach(occurrences::add);
|
||||
}
|
||||
|
||||
if (occurrences.isEmpty()) {
|
||||
return EMPTY_TODO_ITEMS;
|
||||
@@ -96,11 +97,21 @@ public class PsiTodoSearchHelperImpl implements PsiTodoSearchHelper {
|
||||
@Override
|
||||
public int getTodoItemsCount(@NotNull PsiFile file) {
|
||||
VirtualFile virtualFile = file.getVirtualFile();
|
||||
if (virtualFile != null) {
|
||||
int count = TodoCacheManager.getInstance(myProject).getTodoCount(virtualFile, TodoIndexPatternProvider.getInstance());
|
||||
if (count != -1) return count;
|
||||
if (virtualFile == null) {
|
||||
return 0;
|
||||
}
|
||||
return findTodoItems(file).length;
|
||||
|
||||
int total = 0;
|
||||
for (IndexPatternProvider provider : IndexPatternProvider.EP_NAME.getExtensionList()) {
|
||||
final int count = TodoCacheManager.getInstance(myProject).getTodoCount(virtualFile, provider);
|
||||
if (count == -1) {
|
||||
return findTodoItems(file).length;
|
||||
}
|
||||
|
||||
total += count;
|
||||
}
|
||||
|
||||
return total;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user