diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinFocusModeProvider.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinFocusModeProvider.kt new file mode 100644 index 00000000000..f5bbff293b7 --- /dev/null +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinFocusModeProvider.kt @@ -0,0 +1,30 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.core + +import com.intellij.codeInsight.daemon.impl.focusMode.FocusModeProvider +import com.intellij.openapi.util.Segment +import com.intellij.psi.PsiAnonymousClass +import com.intellij.psi.PsiFile +import com.intellij.psi.SyntaxTraverser +import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.containingClass + +class KotlinFocusModeProvider : FocusModeProvider { + override fun calcFocusZones(file: PsiFile): MutableList = + SyntaxTraverser.psiTraverser(file) + .postOrderDfsTraversal() + .filter { + it is KtClassOrObject || it is KtFunction || it is KtClassInitializer + } + .filter { + val p = it.parent + p is KtFile || p is KtClassBody + } + .map { + it.textRange + }.toMutableList() +} \ No newline at end of file diff --git a/idea/resources/META-INF/plugin-common.xml b/idea/resources/META-INF/plugin-common.xml index 8100face1e2..44e0f1d6f14 100644 --- a/idea/resources/META-INF/plugin-common.xml +++ b/idea/resources/META-INF/plugin-common.xml @@ -853,6 +853,8 @@ + +