diff --git a/idea/resources/META-INF/plugin-common.xml b/idea/resources/META-INF/plugin-common.xml index 7c66a7443f4..0c0bc7d68f7 100644 --- a/idea/resources/META-INF/plugin-common.xml +++ b/idea/resources/META-INF/plugin-common.xml @@ -3483,6 +3483,10 @@ + + + diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCodeInsightWorkspaceSettings.kt b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCodeInsightSettings.kt similarity index 63% rename from idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCodeInsightWorkspaceSettings.kt rename to idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCodeInsightSettings.kt index 032d4c854af..801943f0079 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCodeInsightWorkspaceSettings.kt +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCodeInsightSettings.kt @@ -6,15 +6,13 @@ package org.jetbrains.kotlin.idea.codeInsight import com.intellij.openapi.components.* +import com.intellij.openapi.components.StoragePathMacros.WORKSPACE_FILE import com.intellij.openapi.project.Project import com.intellij.util.xmlb.XmlSerializerUtil -@State(name = "KotlinCodeInsightWorkspaceSettings", storages = [Storage("kotlinCodeInsightSettings.xml")]) +@State(name = "KotlinCodeInsightWorkspaceSettings", storages = [Storage(WORKSPACE_FILE)]) class KotlinCodeInsightWorkspaceSettings : PersistentStateComponent { - @JvmField - var addUnambiguousImportsOnTheFly = false - @JvmField var optimizeImportsOnTheFly = false @@ -30,4 +28,24 @@ class KotlinCodeInsightWorkspaceSettings : PersistentStateComponent { + + @JvmField + var addUnambiguousImportsOnTheFly = false + + override fun getState() = this + + override fun loadState(state: KotlinCodeInsightSettings) = XmlSerializerUtil.copyBean(state, this) + + companion object { + + fun getInstance(): KotlinCodeInsightSettings { + return ServiceManager.getService(KotlinCodeInsightSettings::class.java) + } + + } + } \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCodeInsightWorkspaceSettingsProvider.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCodeInsightWorkspaceSettingsProvider.java index 5d96c941d5e..1cffa293e44 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCodeInsightWorkspaceSettingsProvider.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCodeInsightWorkspaceSettingsProvider.java @@ -33,26 +33,32 @@ public class KotlinCodeInsightWorkspaceSettingsProvider implements AutoImportOpt return myPanel; } - private KotlinCodeInsightWorkspaceSettings settings() { + private KotlinCodeInsightSettings settings() { + return KotlinCodeInsightSettings.Companion.getInstance(); + } + + private KotlinCodeInsightWorkspaceSettings projectSettings() { return KotlinCodeInsightWorkspaceSettings.Companion.getInstance(project); } @Override public boolean isModified() { - KotlinCodeInsightWorkspaceSettings settings = settings(); - return settings.optimizeImportsOnTheFly != myOptimizeImportsOnTheFly.isSelected() + KotlinCodeInsightSettings settings = settings(); + KotlinCodeInsightWorkspaceSettings projectSettings = projectSettings(); + return projectSettings.optimizeImportsOnTheFly != myOptimizeImportsOnTheFly.isSelected() || settings.addUnambiguousImportsOnTheFly != myAddUnambiguousImportsOnTheFly.isSelected(); } @Override public void apply() throws ConfigurationException { - KotlinCodeInsightWorkspaceSettings settings = settings(); + KotlinCodeInsightSettings settings = settings(); + KotlinCodeInsightWorkspaceSettings projectSettings = projectSettings(); - settings.optimizeImportsOnTheFly = myOptimizeImportsOnTheFly.isSelected(); + projectSettings.optimizeImportsOnTheFly = myOptimizeImportsOnTheFly.isSelected(); settings.addUnambiguousImportsOnTheFly = myAddUnambiguousImportsOnTheFly.isSelected(); final Map data = new HashMap<>(); - data.put("optimizeImportsOnTheFly", Boolean.toString(settings.optimizeImportsOnTheFly)); + data.put("optimizeImportsOnTheFly", Boolean.toString(projectSettings.optimizeImportsOnTheFly)); data.put("addUnambiguousImportsOnTheFly", Boolean.toString(settings.addUnambiguousImportsOnTheFly)); KotlinFUSLogger.Companion.log(FUSEventGroups.Settings, "KotlinCodeInsightWorkspaceSettings", data); @@ -60,8 +66,9 @@ public class KotlinCodeInsightWorkspaceSettingsProvider implements AutoImportOpt @Override public void reset() { - KotlinCodeInsightWorkspaceSettings settings = settings(); - myOptimizeImportsOnTheFly.setSelected(settings.optimizeImportsOnTheFly); + KotlinCodeInsightSettings settings = settings(); + KotlinCodeInsightWorkspaceSettings projectSettings = projectSettings(); + myOptimizeImportsOnTheFly.setSelected(projectSettings.optimizeImportsOnTheFly); myAddUnambiguousImportsOnTheFly.setSelected(settings.addUnambiguousImportsOnTheFly); } } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ActualImportFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/ActualImportFix.kt index af7d6d1f6ca..0dbbb10ff5d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ActualImportFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ActualImportFix.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.idea.quickfix import com.intellij.openapi.editor.Editor import org.jetbrains.kotlin.diagnostics.Diagnostic -import org.jetbrains.kotlin.idea.codeInsight.KotlinCodeInsightWorkspaceSettings +import org.jetbrains.kotlin.idea.codeInsight.KotlinCodeInsightSettings import org.jetbrains.kotlin.psi.KtSimpleNameExpression internal class ImportFix(expression: KtSimpleNameExpression) : AbstractImportFix(expression, MyFactory) { @@ -15,7 +15,7 @@ internal class ImportFix(expression: KtSimpleNameExpression) : AbstractImportFix if (isOutdated()) return false val element = element ?: return false val project = element.project - if (!KotlinCodeInsightWorkspaceSettings.getInstance(project).addUnambiguousImportsOnTheFly) return false + if (!KotlinCodeInsightSettings.getInstance().addUnambiguousImportsOnTheFly) return false val addImportAction = createAction(project, editor, element) if (addImportAction.isUnambiguous()) { addImportAction.execute() diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/KotlinReferenceImporter.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/KotlinReferenceImporter.kt index 447ca133122..1376b331a06 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/KotlinReferenceImporter.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/KotlinReferenceImporter.kt @@ -26,7 +26,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.idea.actions.createSingleImportAction import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference -import org.jetbrains.kotlin.idea.codeInsight.KotlinCodeInsightWorkspaceSettings +import org.jetbrains.kotlin.idea.codeInsight.KotlinCodeInsightSettings import org.jetbrains.kotlin.idea.core.targetDescriptors import org.jetbrains.kotlin.idea.references.mainReference import org.jetbrains.kotlin.psi.KtFile @@ -47,7 +47,7 @@ class KotlinReferenceImporter : ReferenceImporter { } fun KtSimpleNameExpression.autoImport(): Boolean { - if (!KotlinCodeInsightWorkspaceSettings.getInstance(project).addUnambiguousImportsOnTheFly) return false + if (!KotlinCodeInsightSettings.getInstance().addUnambiguousImportsOnTheFly) return false if (!DaemonListeners.canChangeFileSilently(file)) return false if (hasUnresolvedImportWhichCanImport(getReferencedName())) return false diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/KotlinReferenceImporter.kt.191 b/idea/src/org/jetbrains/kotlin/idea/quickfix/KotlinReferenceImporter.kt.191 index 64d777c5d51..eae46e4144f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/KotlinReferenceImporter.kt.191 +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/KotlinReferenceImporter.kt.191 @@ -27,7 +27,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.idea.actions.createSingleImportAction import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference -import org.jetbrains.kotlin.idea.codeInsight.KotlinCodeInsightWorkspaceSettings +import org.jetbrains.kotlin.idea.codeInsight.KotlinCodeInsightSettings import org.jetbrains.kotlin.idea.core.targetDescriptors import org.jetbrains.kotlin.idea.references.mainReference import org.jetbrains.kotlin.psi.KtExpression @@ -47,7 +47,7 @@ class KotlinReferenceImporter : ReferenceImporter { val nameExpression = file.findElementAt(offset)?.parent as? KtSimpleNameExpression ?: return false - if (!KotlinCodeInsightWorkspaceSettings.getInstance(file.project).addUnambiguousImportsOnTheFly) return false + if (!KotlinCodeInsightSettings.getInstance().addUnambiguousImportsOnTheFly) return false val importFix: ImportFixBase? = findImportFixAt(editor, file, offset) if (importFix != null && !importFix.isOutdated()) { @@ -107,7 +107,7 @@ class KotlinReferenceImporter : ReferenceImporter { } private fun KtSimpleNameExpression.autoImport(editor: Editor, file: KtFile): Boolean { - if (!KotlinCodeInsightWorkspaceSettings.getInstance(file.project).addUnambiguousImportsOnTheFly) return false + if (!KotlinCodeInsightSettings.getInstance().addUnambiguousImportsOnTheFly) return false if (!DaemonListeners.canChangeFileSilently(file)) return false if (hasUnresolvedImportWhichCanImport(file, getReferencedName())) return false