Configuration: Set up Kotlin SDK (if necessary) on plugin startup
#KT-22590 Fixed
This commit is contained in:
@@ -25,10 +25,12 @@ import com.intellij.openapi.editor.EditorFactory;
|
||||
import com.intellij.openapi.editor.event.DocumentAdapter;
|
||||
import com.intellij.openapi.editor.event.DocumentEvent;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
|
||||
import com.intellij.openapi.updateSettings.impl.UpdateChecker;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.search.searches.IndexPatternSearch;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.idea.framework.KotlinSdkType;
|
||||
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinTodoSearcher;
|
||||
import org.jetbrains.kotlin.utils.PathUtil;
|
||||
|
||||
@@ -73,6 +75,8 @@ public class PluginStartupComponent implements ApplicationComponent {
|
||||
});
|
||||
|
||||
ServiceManager.getService(IndexPatternSearch.class).registerExecutor(new KotlinTodoSearcher());
|
||||
|
||||
KotlinSdkType.Companion.setUpIfNeeded();
|
||||
}
|
||||
|
||||
private static void registerPathVariable() {
|
||||
|
||||
@@ -10,12 +10,15 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.framework
|
||||
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.projectRoots.*
|
||||
import com.intellij.openapi.projectRoots.impl.ProjectJdkImpl
|
||||
import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel
|
||||
import com.intellij.util.Consumer
|
||||
import org.jdom.Element
|
||||
import org.jetbrains.kotlin.idea.KotlinIcons
|
||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||
import org.jetbrains.kotlin.idea.versions.bundledRuntimeVersion
|
||||
import org.jetbrains.kotlin.utils.PathUtil
|
||||
import javax.swing.JComponent
|
||||
@@ -23,6 +26,20 @@ import javax.swing.JComponent
|
||||
class KotlinSdkType : SdkType("KotlinSDK") {
|
||||
companion object {
|
||||
@JvmField val INSTANCE = KotlinSdkType()
|
||||
|
||||
val defaultHomePath: String
|
||||
get() = PathUtil.kotlinPathsForIdeaPlugin.homePath.absolutePath
|
||||
|
||||
fun setUpIfNeeded() {
|
||||
with(ProjectSdksModel()) {
|
||||
reset(null)
|
||||
if (sdks.any { it.sdkType is KotlinSdkType }) return
|
||||
addSdk(INSTANCE, defaultHomePath, null)
|
||||
ApplicationManager.getApplication().invokeAndWait {
|
||||
runWriteAction { apply(null, true) }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun getPresentableName() = "Kotlin SDK"
|
||||
@@ -48,7 +65,7 @@ class KotlinSdkType : SdkType("KotlinSDK") {
|
||||
fun createSdkWithUniqueName(existingSdks: Collection<Sdk>): ProjectJdkImpl {
|
||||
val sdkName = suggestSdkName(SdkConfigurationUtil.createUniqueSdkName(this, "", existingSdks), "")
|
||||
return ProjectJdkImpl(sdkName, this).apply {
|
||||
homePath = PathUtil.kotlinPathsForIdeaPlugin.homePath.absolutePath
|
||||
homePath = defaultHomePath
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user