From b8235d1168a65236238564b769896a415d46c02c Mon Sep 17 00:00:00 2001 From: PiTheGuy Date: Mon, 31 Jul 2023 13:15:57 -0500 Subject: [PATCH 1/2] Automatically rename parameters when remapping --- .../org/parchmentmc/scribe/action/MapParameterAction.kt | 8 ++++++++ .../scribe/settings/ParchmentProjectConfigurable.kt | 6 ++++++ .../scribe/settings/ParchmentProjectSettings.kt | 9 ++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/org/parchmentmc/scribe/action/MapParameterAction.kt b/src/main/kotlin/org/parchmentmc/scribe/action/MapParameterAction.kt index a03b9c5..648bc4d 100644 --- a/src/main/kotlin/org/parchmentmc/scribe/action/MapParameterAction.kt +++ b/src/main/kotlin/org/parchmentmc/scribe/action/MapParameterAction.kt @@ -31,9 +31,11 @@ import com.intellij.openapi.ui.InputValidatorEx import com.intellij.openapi.ui.Messages import com.intellij.psi.PsiMethod import com.intellij.psi.PsiParameter +import com.intellij.refactoring.RefactoringFactory import com.intellij.ui.list.createTargetPopup import com.intellij.util.text.nullize import org.parchmentmc.scribe.ParchmentMappings +import org.parchmentmc.scribe.settings.ParchmentProjectSettings import org.parchmentmc.scribe.util.findAllSuperConstructors import org.parchmentmc.scribe.util.findAllSuperMethods @@ -58,6 +60,12 @@ class MapParameterAction : MappingAction() { parameterData.name = mapped mappings.modified = true ParchmentMappings.invalidateHints() + + if (ParchmentProjectSettings.getInstance(project).renameAfterRemap) { + val factory = RefactoringFactory.getInstance(project); + val renameRefactoring = factory.createRename(parameter, mapped, false, false) + renameRefactoring.run() + } } mapParameter(e, parameter, mapFun) diff --git a/src/main/kotlin/org/parchmentmc/scribe/settings/ParchmentProjectConfigurable.kt b/src/main/kotlin/org/parchmentmc/scribe/settings/ParchmentProjectConfigurable.kt index 7e9e7e1..8d17a67 100644 --- a/src/main/kotlin/org/parchmentmc/scribe/settings/ParchmentProjectConfigurable.kt +++ b/src/main/kotlin/org/parchmentmc/scribe/settings/ParchmentProjectConfigurable.kt @@ -82,6 +82,12 @@ class ParchmentProjectConfigurable(private val project: Project) : BoundConfigur .bindSelected(settings::remapParameters) .comment("Determines whether Scribe should automatically remap parameters when inserting constructors and overrides.") } + + row { + checkBox("Rename Parameters When Remapping") + .bindSelected(settings::renameAfterRemap) + .comment("Determines whether Scribe should automatically rename parameters after they are remapped.") + } } override fun apply() { diff --git a/src/main/kotlin/org/parchmentmc/scribe/settings/ParchmentProjectSettings.kt b/src/main/kotlin/org/parchmentmc/scribe/settings/ParchmentProjectSettings.kt index cbded97..dc2d579 100644 --- a/src/main/kotlin/org/parchmentmc/scribe/settings/ParchmentProjectSettings.kt +++ b/src/main/kotlin/org/parchmentmc/scribe/settings/ParchmentProjectSettings.kt @@ -35,7 +35,8 @@ class ParchmentProjectSettings : PersistentStateComponent Date: Mon, 31 Jul 2023 13:29:58 -0500 Subject: [PATCH 2/2] Skip renaming in read-only files --- .../org/parchmentmc/scribe/action/MapParameterAction.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/org/parchmentmc/scribe/action/MapParameterAction.kt b/src/main/kotlin/org/parchmentmc/scribe/action/MapParameterAction.kt index 648bc4d..cd574c7 100644 --- a/src/main/kotlin/org/parchmentmc/scribe/action/MapParameterAction.kt +++ b/src/main/kotlin/org/parchmentmc/scribe/action/MapParameterAction.kt @@ -62,7 +62,12 @@ class MapParameterAction : MappingAction() { ParchmentMappings.invalidateHints() if (ParchmentProjectSettings.getInstance(project).renameAfterRemap) { - val factory = RefactoringFactory.getInstance(project); + val file = parameter.containingFile.virtualFile + if (file != null && !file.isWritable) { + return + } + + val factory = RefactoringFactory.getInstance(project) val renameRefactoring = factory.createRename(parameter, mapped, false, false) renameRefactoring.run() }