minor: ScriptingSupport.Provider -> ScriptingSupport, KDoc
This commit is contained in:
+1
-1
@@ -46,7 +46,7 @@ class CompositeScriptConfigurationManager(val project: Project) : ScriptConfigur
|
|||||||
|
|
||||||
val updater = ScriptClassRootsUpdater(project, this)
|
val updater = ScriptClassRootsUpdater(project, this)
|
||||||
|
|
||||||
private val plugins = ScriptingSupport.Provider.EPN.getPoint(project).extensionList
|
private val plugins = ScriptingSupport.EPN.getPoint(project).extensionList
|
||||||
|
|
||||||
val default = DefaultScriptingSupport(this)
|
val default = DefaultScriptingSupport(this)
|
||||||
|
|
||||||
|
|||||||
+26
-8
@@ -8,17 +8,35 @@ package org.jetbrains.kotlin.idea.core.script.configuration
|
|||||||
import com.intellij.openapi.extensions.ExtensionPointName
|
import com.intellij.openapi.extensions.ExtensionPointName
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import org.jetbrains.kotlin.idea.core.script.configuration.utils.ScriptClassRootsCache
|
import org.jetbrains.kotlin.idea.core.script.configuration.utils.ScriptClassRootsCache
|
||||||
|
import org.jetbrains.kotlin.idea.core.script.configuration.listener.ScriptChangeListener
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extension point for overriding default Kotlin scripting support.
|
||||||
|
*
|
||||||
|
* Implementation should store script configuration internally (in memory and/or fs),
|
||||||
|
* and provide it inside [collectConfigurations] using the [ScriptClassRootsCache.LightScriptInfo].
|
||||||
|
* Custom data can be attached to [ScriptClassRootsCache.LightScriptInfo] and retrieved
|
||||||
|
* by calling [ScriptClassRootsCache.getLightScriptInfo].
|
||||||
|
*
|
||||||
|
* [ScriptChangeListener] can be used to listen script changes.
|
||||||
|
* [CompositeScriptConfigurationManager.updater] should be used to schedule configuration reloading.
|
||||||
|
*
|
||||||
|
* [isApplicable] should return true for files that is covered by that support.
|
||||||
|
*
|
||||||
|
* [isConfigurationLoadingInProgress] is used to pause analyzing.
|
||||||
|
*
|
||||||
|
* Long read: [idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/README.md].
|
||||||
|
*
|
||||||
|
* @sample GradleBuildRootsManager
|
||||||
|
*/
|
||||||
abstract class ScriptingSupport {
|
abstract class ScriptingSupport {
|
||||||
abstract class Provider {
|
abstract fun isApplicable(file: VirtualFile): Boolean
|
||||||
abstract fun isApplicable(file: VirtualFile): Boolean
|
abstract fun isConfigurationLoadingInProgress(file: KtFile): Boolean
|
||||||
abstract fun isConfigurationLoadingInProgress(file: KtFile): Boolean
|
abstract fun collectConfigurations(builder: ScriptClassRootsCache.Builder)
|
||||||
abstract fun collectConfigurations(builder: ScriptClassRootsCache.Builder)
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val EPN: ExtensionPointName<Provider> =
|
val EPN: ExtensionPointName<ScriptingSupport> =
|
||||||
ExtensionPointName.create("org.jetbrains.kotlin.scripting.idea.scriptingSupportProvider")
|
ExtensionPointName.create("org.jetbrains.kotlin.scripting.idea.scriptingSupport")
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
-31
@@ -1,31 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.idea.core.script.configuration.listener
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.idea.core.script.configuration.cache.ScriptConfigurationCacheScope
|
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
|
||||||
|
|
||||||
interface ScriptConfigurationUpdater {
|
|
||||||
/**
|
|
||||||
* Ensure that configuration for [file] is up-to-date,
|
|
||||||
* or new configuration loading is started
|
|
||||||
*/
|
|
||||||
fun ensureUpToDatedConfigurationSuggested(file: KtFile)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check that configurations for given [files] is up-to-date or try synchronously update
|
|
||||||
* them. Synchronous update will be occurred only if auto apply is enabled and
|
|
||||||
* configuration for given file will not be loaded in background.
|
|
||||||
*
|
|
||||||
* @return true, if all files are already up-to-date or updated during this call
|
|
||||||
*/
|
|
||||||
fun ensureConfigurationUpToDate(files: List<KtFile>): Boolean
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Suggest to update script configuration if configuration for [file] is out of date
|
|
||||||
*/
|
|
||||||
fun suggestToUpdateConfigurationIfOutOfDate(file: KtFile)
|
|
||||||
}
|
|
||||||
+2
-4
@@ -10,11 +10,9 @@ import com.intellij.openapi.project.Project
|
|||||||
import com.intellij.util.xmlb.XmlSerializerUtil
|
import com.intellij.util.xmlb.XmlSerializerUtil
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Actually, this storage is required only for before Gradle 6.0.
|
* This cache is used by [org.jetbrains.kotlin.idea.core.script.configuration.DefaultScriptingSupport] only.
|
||||||
* For projects starting from Gradle 6.0, [org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptingSupportProvider]
|
* @see org.jetbrains.kotlin.idea.core.script.configuration.DefaultScriptingSupport.collectConfigurations
|
||||||
* will also store all roots in FS, and will overwrite this one shrotly after start.
|
|
||||||
*
|
*
|
||||||
* Btw, this is still useful for projects without custom scripting support.
|
|
||||||
*/
|
*/
|
||||||
@State(
|
@State(
|
||||||
name = "ScriptClassRootsStorage",
|
name = "ScriptClassRootsStorage",
|
||||||
|
|||||||
+1
-1
@@ -56,7 +56,7 @@ import java.util.concurrent.atomic.AtomicBoolean
|
|||||||
* - [GradleBuildRoot.New] - not yet imported
|
* - [GradleBuildRoot.New] - not yet imported
|
||||||
* - [GradleBuildRoot.Imported] - imported
|
* - [GradleBuildRoot.Imported] - imported
|
||||||
*/
|
*/
|
||||||
class GradleBuildRootsManager(val project: Project) : ScriptingSupport.Provider() {
|
class GradleBuildRootsManager(val project: Project) : ScriptingSupport() {
|
||||||
private val manager: CompositeScriptConfigurationManager
|
private val manager: CompositeScriptConfigurationManager
|
||||||
get() = ScriptConfigurationManager.getInstance(project) as CompositeScriptConfigurationManager
|
get() = ScriptConfigurationManager.getInstance(project) as CompositeScriptConfigurationManager
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
<loader order="first" implementation="org.jetbrains.kotlin.idea.scripting.gradle.legacy.GradleLegacyScriptConfigurationLoader"/>
|
<loader order="first" implementation="org.jetbrains.kotlin.idea.scripting.gradle.legacy.GradleLegacyScriptConfigurationLoader"/>
|
||||||
|
|
||||||
<scriptingSupportProvider implementation="org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager"/>
|
<scriptingSupport implementation="org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager"/>
|
||||||
</extensions>
|
</extensions>
|
||||||
|
|
||||||
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
|
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
<loader order="first" implementation="org.jetbrains.kotlin.idea.scripting.gradle.legacy.GradleLegacyScriptConfigurationLoader"/>
|
<loader order="first" implementation="org.jetbrains.kotlin.idea.scripting.gradle.legacy.GradleLegacyScriptConfigurationLoader"/>
|
||||||
|
|
||||||
<scriptingSupportProvider implementation="org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager"/>
|
<scriptingSupport implementation="org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager"/>
|
||||||
</extensions>
|
</extensions>
|
||||||
|
|
||||||
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
|
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<idea-plugin>
|
<idea-plugin>
|
||||||
<extensionPoints>
|
<extensionPoints>
|
||||||
<extensionPoint qualifiedName="org.jetbrains.kotlin.scripting.idea.scriptingSupportProvider"
|
<extensionPoint qualifiedName="org.jetbrains.kotlin.scripting.idea.scriptingSupport"
|
||||||
interface="org.jetbrains.kotlin.idea.core.script.configuration.ScriptingSupport$Provider"
|
interface="org.jetbrains.kotlin.idea.core.script.configuration.ScriptingSupport"
|
||||||
area="IDEA_PROJECT"/>
|
area="IDEA_PROJECT"/>
|
||||||
</extensionPoints>
|
</extensionPoints>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user