Group by file structure: show groups on text search (KT-28838)
#KT-28838 Fixed
This commit is contained in:
committed by
Nikolay Krasko
parent
76f2430e7c
commit
7149d4cd1c
@@ -20,6 +20,7 @@ import com.intellij.openapi.project.Project
|
|||||||
import com.intellij.usages.PsiNamedElementUsageGroupBase
|
import com.intellij.usages.PsiNamedElementUsageGroupBase
|
||||||
import com.intellij.usages.Usage
|
import com.intellij.usages.Usage
|
||||||
import com.intellij.usages.UsageGroup
|
import com.intellij.usages.UsageGroup
|
||||||
|
import com.intellij.usages.UsageInfo2UsageAdapter
|
||||||
import com.intellij.usages.impl.FileStructureGroupRuleProvider
|
import com.intellij.usages.impl.FileStructureGroupRuleProvider
|
||||||
import com.intellij.usages.rules.PsiElementUsage
|
import com.intellij.usages.rules.PsiElementUsage
|
||||||
import com.intellij.usages.rules.UsageGroupingRule
|
import com.intellij.usages.rules.UsageGroupingRule
|
||||||
@@ -30,10 +31,17 @@ import org.jetbrains.kotlin.psi.psiUtil.parents
|
|||||||
|
|
||||||
class KotlinDeclarationGroupingRule(val level: Int = 0) : UsageGroupingRule {
|
class KotlinDeclarationGroupingRule(val level: Int = 0) : UsageGroupingRule {
|
||||||
override fun groupUsage(usage: Usage): UsageGroup? {
|
override fun groupUsage(usage: Usage): UsageGroup? {
|
||||||
val element = (usage as? PsiElementUsage)?.element ?: return null
|
var element = (usage as? PsiElementUsage)?.element ?: return null
|
||||||
|
|
||||||
if (element.containingFile !is KtFile) return null
|
if (element.containingFile !is KtFile) return null
|
||||||
|
|
||||||
|
if (element is KtFile) {
|
||||||
|
val offset = (usage as? UsageInfo2UsageAdapter)?.usageInfo?.navigationOffset
|
||||||
|
if (offset != null) {
|
||||||
|
element = element.findElementAt(offset) ?: element
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val parentList = element.parents.filterIsInstance<KtNamedDeclaration>().filterNot { it is KtProperty && it.isLocal }.toList()
|
val parentList = element.parents.filterIsInstance<KtNamedDeclaration>().filterNot { it is KtProperty && it.isLocal }.toList()
|
||||||
if (parentList.size <= level) {
|
if (parentList.size <= level) {
|
||||||
return null
|
return null
|
||||||
|
|||||||
Reference in New Issue
Block a user