From 7149d4cd1ce8e2dc423ee5b70db4979d6fec6b63 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Mon, 18 Feb 2019 13:25:57 +0300 Subject: [PATCH] Group by file structure: show groups on text search (KT-28838) #KT-28838 Fixed --- .../findUsages/KotlinDeclarationGroupRuleProvider.kt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinDeclarationGroupRuleProvider.kt b/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinDeclarationGroupRuleProvider.kt index aebd60938a7..efe91947140 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinDeclarationGroupRuleProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinDeclarationGroupRuleProvider.kt @@ -20,6 +20,7 @@ import com.intellij.openapi.project.Project import com.intellij.usages.PsiNamedElementUsageGroupBase import com.intellij.usages.Usage import com.intellij.usages.UsageGroup +import com.intellij.usages.UsageInfo2UsageAdapter import com.intellij.usages.impl.FileStructureGroupRuleProvider import com.intellij.usages.rules.PsiElementUsage import com.intellij.usages.rules.UsageGroupingRule @@ -30,10 +31,17 @@ import org.jetbrains.kotlin.psi.psiUtil.parents class KotlinDeclarationGroupingRule(val level: Int = 0) : UsageGroupingRule { 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 is KtFile) { + val offset = (usage as? UsageInfo2UsageAdapter)?.usageInfo?.navigationOffset + if (offset != null) { + element = element.findElementAt(offset) ?: element + } + } + val parentList = element.parents.filterIsInstance().filterNot { it is KtProperty && it.isLocal }.toList() if (parentList.size <= level) { return null