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