Experimental features EP + completion.stats optional dependency

Fixed tests for Spring
This commit is contained in:
Alexander Podkhalyuzin
2020-03-17 15:09:30 +03:00
parent f85022532d
commit 0247a300d1
6 changed files with 37 additions and 26 deletions
@@ -0,0 +1,5 @@
<idea-plugin>
<extensions defaultExtensionNs="org.jetbrains.kotlin">
<experimentalFeature implementation="org.jetbrains.kotlin.idea.configuration.MLCompletionForKotlinFeature"/>
</extensions>
</idea-plugin>
@@ -70,6 +70,9 @@
<extensionPoint qualifiedName="org.jetbrains.kotlin.additionalExtractableAnalyser"
interface="org.jetbrains.kotlin.idea.refactoring.introduce.extractionEngine.AdditionalExtractableAnalyser"/>
<extensionPoint qualifiedName="org.jetbrains.kotlin.experimentalFeature"
interface="org.jetbrains.kotlin.idea.configuration.ExperimentalFeature"/>
</extensionPoints>
<extensions defaultExtensionNs="org.jetbrains.kotlin">
+1 -2
View File
@@ -29,8 +29,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
<depends optional="true" config-file="decompiler.xml">org.jetbrains.java.decompiler</depends>
<depends optional="true" config-file="git4idea.xml">Git4Idea</depends>
<depends optional="true" config-file="stream-debugger.xml">org.jetbrains.debugger.streams</depends>
<depends>com.intellij.stats.completion</depends>
<depends optional="true" config-file="completion-stats.xml">com.intellij.stats.completion</depends>
<!-- ULTIMATE-PLUGIN-PLACEHOLDER -->
+1 -2
View File
@@ -29,8 +29,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
<depends optional="true" config-file="decompiler.xml">org.jetbrains.java.decompiler</depends>
<depends optional="true" config-file="git4idea.xml">Git4Idea</depends>
<depends optional="true" config-file="stream-debugger.xml">org.jetbrains.debugger.streams</depends>
<depends>com.intellij.stats.completion</depends>
<depends optional="true" config-file="completion-stats.xml">com.intellij.stats.completion</depends>
<!-- ULTIMATE-PLUGIN-PLACEHOLDER -->
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.idea.configuration
import com.intellij.openapi.extensions.ExtensionPointName
import com.intellij.openapi.util.registry.Registry
import com.intellij.ui.components.JBCheckBox
import org.jdesktop.swingx.VerticalLayout
@@ -40,38 +41,28 @@ object ExperimentalFeatures {
}
}
object MLCompletionForKotlinFeature : ExperimentalFeature {
override val title: String
get() = KotlinBundle.message("experimental.ml.completion")
override fun shouldBeShown(): Boolean = MLCompletionForKotlin.isAvailable
override var isEnabled: Boolean
get() = MLCompletionForKotlin.isEnabled
set(value) {
MLCompletionForKotlin.isEnabled = value
}
}
val allFeatures: List<ExperimentalFeature> = listOf(
NewJ2k,
NewWizard,
MLCompletionForKotlinFeature
)
NewWizard
) + ExperimentalFeature.EP_NAME.extensionList
}
interface ExperimentalFeature {
val title: String
var isEnabled: Boolean
fun shouldBeShown(): Boolean = true
fun onFeatureStatusChanged(enabled: Boolean) {}
abstract class ExperimentalFeature {
abstract val title: String
abstract var isEnabled: Boolean
open fun shouldBeShown(): Boolean = true
open fun onFeatureStatusChanged(enabled: Boolean) {}
companion object {
internal var EP_NAME = ExtensionPointName<ExperimentalFeature>("org.jetbrains.kotlin.experimentalFeature")
}
}
open class RegistryExperimentalFeature(
override val title: String,
private val registryKey: String,
private val enabledByDefault: Boolean
) : ExperimentalFeature {
) : ExperimentalFeature() {
final override var isEnabled
get() = Registry.`is`(registryKey, enabledByDefault)
set(value) {
@@ -6,8 +6,22 @@
package org.jetbrains.kotlin.idea.configuration
import com.intellij.completion.settings.CompletionMLRankingSettings
import org.jetbrains.kotlin.idea.KotlinBundle
import kotlin.reflect.jvm.isAccessible
object MLCompletionForKotlinFeature : ExperimentalFeature() {
override val title: String
get() = KotlinBundle.message("experimental.ml.completion")
override fun shouldBeShown(): Boolean = MLCompletionForKotlin.isAvailable
override var isEnabled: Boolean
get() = MLCompletionForKotlin.isEnabled
set(value) {
MLCompletionForKotlin.isEnabled = value
}
}
internal object MLCompletionForKotlin {
const val isAvailable: Boolean = true