Store addUnambiguousImportsOnTheFly in kotlin code insight settings
store optimizeImportsOnTheFly in kotlin code insight workspace settings #KT-36034 Fixed
This commit is contained in:
@@ -3483,6 +3483,10 @@
|
||||
|
||||
<projectService serviceInterface="org.jetbrains.kotlin.idea.codeInsight.KotlinCodeInsightWorkspaceSettings"
|
||||
serviceImplementation="org.jetbrains.kotlin.idea.codeInsight.KotlinCodeInsightWorkspaceSettings"/>
|
||||
|
||||
<applicationService serviceInterface="org.jetbrains.kotlin.idea.codeInsight.KotlinCodeInsightSettings"
|
||||
serviceImplementation="org.jetbrains.kotlin.idea.codeInsight.KotlinCodeInsightSettings"/>
|
||||
|
||||
<referenceImporter implementation="org.jetbrains.kotlin.idea.quickfix.KotlinReferenceImporter"/>
|
||||
<autoImportOptionsProvider instance="org.jetbrains.kotlin.idea.codeInsight.KotlinCodeInsightWorkspaceSettingsProvider"/>
|
||||
|
||||
|
||||
+22
-4
@@ -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<KotlinCodeInsightWorkspaceSettings> {
|
||||
|
||||
@JvmField
|
||||
var addUnambiguousImportsOnTheFly = false
|
||||
|
||||
@JvmField
|
||||
var optimizeImportsOnTheFly = false
|
||||
|
||||
@@ -30,4 +28,24 @@ class KotlinCodeInsightWorkspaceSettings : PersistentStateComponent<KotlinCodeIn
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@State(name = "KotlinCodeInsightSettings", storages = [Storage("editor.codeinsight.xml")])
|
||||
class KotlinCodeInsightSettings : PersistentStateComponent<KotlinCodeInsightSettings> {
|
||||
|
||||
@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)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+15
-8
@@ -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<String, String> 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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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<out KtExpression>? = 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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user