Do not search TODOs in non KT and non physical files
#KT-37896 Fixed #EA-230407 Fixed
This commit is contained in:
committed by
Vladimir Dolzhenko
parent
67fec903f6
commit
a53a12b68a
@@ -25,6 +25,7 @@ import com.intellij.psi.search.IndexPatternOccurrence
|
|||||||
import com.intellij.psi.search.searches.IndexPatternSearch
|
import com.intellij.psi.search.searches.IndexPatternSearch
|
||||||
import com.intellij.util.Processor
|
import com.intellij.util.Processor
|
||||||
import org.jetbrains.kotlin.psi.KtCallExpression
|
import org.jetbrains.kotlin.psi.KtCallExpression
|
||||||
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi.KtTreeVisitorVoid
|
import org.jetbrains.kotlin.psi.KtTreeVisitorVoid
|
||||||
|
|
||||||
data class KotlinTodoOccurrence(private val _file: PsiFile, private val _textRange: TextRange, private val _pattern: IndexPattern) :
|
data class KotlinTodoOccurrence(private val _file: PsiFile, private val _textRange: TextRange, private val _pattern: IndexPattern) :
|
||||||
@@ -36,20 +37,21 @@ data class KotlinTodoOccurrence(private val _file: PsiFile, private val _textRan
|
|||||||
|
|
||||||
class KotlinTodoSearcher : QueryExecutorBase<IndexPatternOccurrence, IndexPatternSearch.SearchParameters>(true) {
|
class KotlinTodoSearcher : QueryExecutorBase<IndexPatternOccurrence, IndexPatternSearch.SearchParameters>(true) {
|
||||||
override fun processQuery(queryParameters: IndexPatternSearch.SearchParameters, consumer: Processor<in IndexPatternOccurrence>) {
|
override fun processQuery(queryParameters: IndexPatternSearch.SearchParameters, consumer: Processor<in IndexPatternOccurrence>) {
|
||||||
|
val file = queryParameters.file as? KtFile ?: return
|
||||||
|
val virtualFile = file.virtualFile ?: return
|
||||||
|
|
||||||
var pattern = queryParameters.pattern
|
var pattern = queryParameters.pattern
|
||||||
if (pattern != null && !pattern.patternString.contains("TODO", true)) return
|
if (pattern != null && !pattern.patternString.contains("TODO", true)) return
|
||||||
if (pattern == null) {
|
if (pattern == null) {
|
||||||
pattern = queryParameters.patternProvider.indexPatterns.firstOrNull { it.patternString.contains("TODO", true) } ?: return
|
pattern = queryParameters.patternProvider.indexPatterns.firstOrNull { it.patternString.contains("TODO", true) } ?: return
|
||||||
}
|
}
|
||||||
|
|
||||||
val file = queryParameters.file
|
|
||||||
|
|
||||||
val cacheManager = TodoCacheManager.SERVICE.getInstance(file.project)
|
val cacheManager = TodoCacheManager.SERVICE.getInstance(file.project)
|
||||||
val patternProvider = queryParameters.patternProvider
|
val patternProvider = queryParameters.patternProvider
|
||||||
val count = if (patternProvider != null) {
|
val count = if (patternProvider != null) {
|
||||||
cacheManager.getTodoCount(file.virtualFile, patternProvider)
|
cacheManager.getTodoCount(virtualFile, patternProvider)
|
||||||
} else
|
} else
|
||||||
cacheManager.getTodoCount(file.virtualFile, pattern)
|
cacheManager.getTodoCount(virtualFile, pattern)
|
||||||
if (count == 0) return
|
if (count == 0) return
|
||||||
|
|
||||||
file.accept(object : KtTreeVisitorVoid() {
|
file.accept(object : KtTreeVisitorVoid() {
|
||||||
|
|||||||
Reference in New Issue
Block a user