mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[kotlin] k2: enable extract function to scope refactoring
similar to KTIJ-29206 GitOrigin-RevId: d278bb1340087705bfe9e99c93f265a4c6e693ce
This commit is contained in:
committed by
intellij-monorepo-bot
parent
f540ac01fc
commit
d6bb6c080d
+5
@@ -43,5 +43,10 @@
|
||||
<add-to-group group-id="IntroduceActionsGroup" anchor="after" relative-to-action="ExtractMethod"/>
|
||||
<add-to-group group-id="Floating.CodeToolbar.Extract" anchor="first"/>
|
||||
</action>
|
||||
<action id="ExtractFunctionToScope" class="org.jetbrains.kotlin.idea.k2.refactoring.extractFunction.ExtractK2FunctionToScopeAction"
|
||||
use-shortcut-of="ExtractMethod">
|
||||
<keyboard-shortcut keymap="$default" first-keystroke="control alt shift M"/>
|
||||
<add-to-group group-id="IntroduceActionsGroup" anchor="after" relative-to-action="ExtractFunction"/>
|
||||
</action>
|
||||
</actions>
|
||||
</idea-plugin>
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.psi.KtElement
|
||||
|
||||
class ExtractK2FunctionAction : BasePlatformRefactoringAction() {
|
||||
override fun getRefactoringHandler(provider: RefactoringSupportProvider): RefactoringActionHandler? =
|
||||
KotlinFirExtractFunctionHandler()
|
||||
KotlinFirExtractFunctionHandler(false)
|
||||
|
||||
override fun isAvailableInEditorOnly(): Boolean {
|
||||
return true
|
||||
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
|
||||
package org.jetbrains.kotlin.idea.k2.refactoring.extractFunction
|
||||
|
||||
import com.intellij.lang.refactoring.RefactoringSupportProvider
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.refactoring.RefactoringActionHandler
|
||||
import com.intellij.refactoring.actions.BasePlatformRefactoringAction
|
||||
import org.jetbrains.kotlin.idea.k2.refactoring.introduce.extractFunction.KotlinFirExtractFunctionHandler
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
|
||||
class ExtractK2FunctionToScopeAction : BasePlatformRefactoringAction() {
|
||||
override fun getRefactoringHandler(provider: RefactoringSupportProvider): RefactoringActionHandler? =
|
||||
KotlinFirExtractFunctionHandler(true)
|
||||
|
||||
override fun isAvailableInEditorOnly(): Boolean {
|
||||
return true
|
||||
}
|
||||
|
||||
override fun isEnabledOnElements(elements: Array<out PsiElement>): Boolean =
|
||||
elements.all { it is KtElement }
|
||||
}
|
||||
+9
-5
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.idea.k2.refactoring.extractFunction.ExtractionData
|
||||
import org.jetbrains.kotlin.idea.k2.refactoring.extractFunction.ExtractionGeneratorConfiguration
|
||||
import org.jetbrains.kotlin.idea.k2.refactoring.extractFunction.ExtractionResult
|
||||
import org.jetbrains.kotlin.idea.k2.refactoring.extractFunction.ui.KotlinFirExtractFunctionDialog
|
||||
import org.jetbrains.kotlin.idea.k2.refactoring.introduce.extractFunction.KotlinFirExtractFunctionHandler.InteractiveExtractionHelper
|
||||
import org.jetbrains.kotlin.idea.k2.refactoring.introduce.extractionEngine.ExtractionDataAnalyzer
|
||||
import org.jetbrains.kotlin.idea.k2.refactoring.introduce.extractionEngine.ExtractionEngineHelper
|
||||
import org.jetbrains.kotlin.idea.refactoring.introduce.extractFunction.AbstractExtractKotlinFunctionHandler
|
||||
@@ -36,8 +37,11 @@ import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.isIdentifier
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
class KotlinFirExtractFunctionHandler(private val helper: ExtractionEngineHelper = InplaceExtractionHelper) :
|
||||
AbstractExtractKotlinFunctionHandler() {
|
||||
class KotlinFirExtractFunctionHandler(
|
||||
private val acceptAllScopes: Boolean,
|
||||
private val helper: ExtractionEngineHelper = InplaceExtractionHelper(acceptAllScopes)
|
||||
) :
|
||||
AbstractExtractKotlinFunctionHandler(acceptAllScopes) {
|
||||
|
||||
object InteractiveExtractionHelper : ExtractionEngineHelper(EXTRACT_FUNCTION) {
|
||||
@OptIn(KtAllowAnalysisOnEdt::class)
|
||||
@@ -59,10 +63,10 @@ class KotlinFirExtractFunctionHandler(private val helper: ExtractionEngineHelper
|
||||
}
|
||||
}
|
||||
|
||||
object InplaceExtractionHelper : ExtractionEngineHelper(EXTRACT_FUNCTION),
|
||||
AbstractInplaceExtractionHelper<KtType, ExtractionResult, ExtractableCodeDescriptorWithConflicts> {
|
||||
class InplaceExtractionHelper(private val acceptAllScopes: Boolean) : ExtractionEngineHelper(EXTRACT_FUNCTION),
|
||||
AbstractInplaceExtractionHelper<KtType, ExtractionResult, ExtractableCodeDescriptorWithConflicts> {
|
||||
override fun createRestartHandler(): AbstractExtractKotlinFunctionHandler =
|
||||
KotlinFirExtractFunctionHandler(InteractiveExtractionHelper)
|
||||
KotlinFirExtractFunctionHandler(acceptAllScopes, InteractiveExtractionHelper)
|
||||
|
||||
override fun extractDuplicates(
|
||||
duplicateReplacers: Map<KotlinPsiRange, () -> Unit>, project: Project, editor: Editor
|
||||
|
||||
+1
@@ -33,6 +33,7 @@ abstract class AbstractK2IntroduceFunctionTest : AbstractExtractionTest() {
|
||||
extractionOptions: ExtractionOptions
|
||||
): AbstractExtractKotlinFunctionHandler {
|
||||
return KotlinFirExtractFunctionHandler(
|
||||
false,
|
||||
helper = object : ExtractionEngineHelper(EXTRACT_FUNCTION) {
|
||||
override fun adjustExtractionData(data: ExtractionData): ExtractionData {
|
||||
return ActionUtil.underModalProgress(project, "adjust for tests") {
|
||||
|
||||
Reference in New Issue
Block a user