Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
bf1ad44a
K
kotlin
项目概览
硅谷海盗
/
kotlin
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kotlin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
bf1ad44a
编写于
6月 16, 2020
作者:
N
Natalia Selezneva
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Run partial import only for specified build root
上级
5fe47ffb
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
57 addition
and
36 deletion
+57
-36
idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt
...brains/kotlin/idea/scripting/gradle/GradleImportHelper.kt
+23
-17
idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt.201
...ns/kotlin/idea/scripting/gradle/GradleImportHelper.kt.201
+26
-15
idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptNotificationProvider.kt
...idea/scripting/gradle/GradleScriptNotificationProvider.kt
+8
-4
未找到文件。
idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt
浏览文件 @
bf1ad44a
...
...
@@ -22,6 +22,7 @@ import com.intellij.openapi.vfs.VirtualFile
import
org.gradle.util.GradleVersion
import
org.jetbrains.kotlin.idea.KotlinIcons
import
org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle
import
org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRoot
import
org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager
import
org.jetbrains.kotlin.idea.util.application.getServiceSafe
import
org.jetbrains.kotlin.psi.UserDataProperty
...
...
@@ -32,25 +33,26 @@ import org.jetbrains.plugins.gradle.util.GradleConstants
val
scriptConfigurationsNeedToBeUpdatedBalloon
get
()
=
Registry
.
`is`
(
"kotlin.gradle.scripts.scriptConfigurationsNeedToBeUpdatedBalloon"
,
false
)
fun
runPartialGradleImport
(
project
:
Project
)
{
getGradleProjectSettings
(
project
).
forEach
{
ExternalSystemUtil
.
refreshProject
(
it
.
externalProjectPath
,
ImportSpecBuilder
(
project
,
GradleConstants
.
SYSTEM_ID
)
.
build
()
)
fun
runPartialGradleImportForAllRoots
(
project
:
Project
)
{
GradleBuildRootsManager
.
getInstance
(
project
).
getAllRoots
().
forEach
{
root
->
runPartialGradleImport
(
project
,
root
)
}
}
fun
getMissingConfigurationActionText
()
=
KotlinIdeaGradleBundle
.
message
(
"action.label.import.project"
)
fun
runPartialGradleImport
(
project
:
Project
,
root
:
GradleBuildRoot
)
{
ExternalSystemUtil
.
refreshProject
(
root
.
pathPrefix
,
ImportSpecBuilder
(
project
,
GradleConstants
.
SYSTEM_ID
)
.
build
()
)
}
fun
autoReloadScriptConfigurations
(
project
:
Project
,
file
:
VirtualFile
):
Boolean
{
val
path
=
GradleBuildRootsManager
.
getInstance
(
project
)
.
getScriptInfo
(
file
)
?.
buildRoot
?.
pathPrefix
?:
return
false
fun
getMissingConfigurationActionText
()
=
KotlinIdeaGradleBundle
.
message
(
"action.label.import.project"
)
fun
autoReloadScriptConfigurations
(
project
:
Project
,
root
:
GradleBuildRoot
):
Boolean
{
return
ExternalSystemApiUtil
.
getSettings
(
project
,
GradleConstants
.
SYSTEM_ID
)
.
getLinkedProjectSettings
(
path
)
.
getLinkedProjectSettings
(
root
.
pathPrefix
)
?.
isUseAutoImport
?:
false
}
...
...
@@ -61,7 +63,8 @@ private var Project.notificationPanel: ScriptConfigurationChangedNotification?
fun
scriptConfigurationsNeedToBeUpdated
(
project
:
Project
,
file
:
VirtualFile
)
{
if
(!
scriptConfigurationsNeedToBeUpdatedBalloon
)
return
if
(
autoReloadScriptConfigurations
(
project
,
file
))
{
val
root
=
GradleBuildRootsManager
.
getInstance
(
project
).
getScriptInfo
(
file
)
?.
buildRoot
?:
return
if
(
autoReloadScriptConfigurations
(
project
,
root
))
{
// import should be run automatically by Gradle plugin
return
}
...
...
@@ -103,10 +106,13 @@ private class ScriptConfigurationChangedNotification(val project: Project) :
init
{
addAction
(
LoadConfigurationAction
())
addAction
(
NotificationAction
.
createSimple
(
KotlinIdeaGradleBundle
.
message
(
"action.label.enable.auto.import"
))
{
getGradleProjectSettings
(
project
).
forEach
{
it
.
isUseAutoImport
=
true
GradleBuildRootsManager
.
getInstance
(
project
).
getAllRoots
().
forEach
{
root
->
val
projectSettings
=
getGradleProjectSettings
(
project
).
find
{
it
.
externalProjectPath
==
root
.
pathPrefix
}
if
(
projectSettings
!=
null
)
{
projectSettings
.
isUseAutoImport
=
true
}
runPartialGradleImport
(
project
,
root
)
}
runPartialGradleImport
(
project
)
})
}
...
...
@@ -119,7 +125,7 @@ private class ScriptConfigurationChangedNotification(val project: Project) :
private
class
LoadConfigurationAction
:
AnAction
(
KotlinIdeaGradleBundle
.
message
(
"action.label.import.project"
))
{
override
fun
actionPerformed
(
e
:
AnActionEvent
)
{
val
project
=
e
.
project
?:
return
runPartialGradleImport
(
project
)
runPartialGradleImport
ForAllRoots
(
project
)
}
}
}
...
...
idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt.201
浏览文件 @
bf1ad44a
...
...
@@ -23,35 +23,42 @@ import org.jetbrains.kotlin.idea.KotlinIcons
import
org
.
jetbrains
.
kotlin
.
idea
.
KotlinIdeaGradleBundle
import
org
.
jetbrains
.
kotlin
.
idea
.
core
.
script
.
settings
.
KotlinScriptingSettings
import
org
.
jetbrains
.
kotlin
.
idea
.
scripting
.
gradle
.
importing
.
KotlinDslScriptModelResolver
import
org
.
jetbrains
.
kotlin
.
idea
.
scripting
.
gradle
.
roots
.
GradleBuildRoot
import
org
.
jetbrains
.
kotlin
.
idea
.
scripting
.
gradle
.
roots
.
GradleBuildRootsManager
import
org
.
jetbrains
.
kotlin
.
scripting
.
definitions
.
findScriptDefinition
import
org
.
jetbrains
.
plugins
.
gradle
.
service
.
project
.
GradlePartialResolverPolicy
import
org
.
jetbrains
.
plugins
.
gradle
.
settings
.
GradleProjectSettings
import
org
.
jetbrains
.
plugins
.
gradle
.
util
.
GradleConstants
fun
runPartialGradleImport
(
project
:
Project
)
{
getGradleProjectSettings
(
project
).
forEach
{
gradleProjectSettings
->
ExternalSystemUtil
.
refreshProject
(
gradleProjectSettings
.
externalProjectPath
,
ImportSpecBuilder
(
project
,
GradleConstants
.
SYSTEM_ID
)
.
projectResolverPolicy
(
GradlePartialResolverPolicy
{
it
is
KotlinDslScriptModelResolver
}
)
)
fun
runPartialGradleImportForAllRoots
(
project
:
Project
)
{
GradleBuildRootsManager
.
getInstance
(
project
).
getAllRoots
().
forEach
{
root
->
runPartialGradleImport
(
project
,
root
)
}
}
fun
runPartialGradleImport
(
project
:
Project
,
root
:
GradleBuildRoot
)
{
ExternalSystemUtil
.
refreshProject
(
root
.
pathPrefix
,
ImportSpecBuilder
(
project
,
GradleConstants
.
SYSTEM_ID
)
.
projectResolverPolicy
(
GradlePartialResolverPolicy
{
it
is
KotlinDslScriptModelResolver
}
)
)
}
fun
getMissingConfigurationActionText
()
=
KotlinIdeaGradleBundle
.
message
(
"action.text.load.script.configurations"
)
fun
autoReloadScriptConfigurations
(
project
:
Project
,
file
:
VirtualFile
):
Boolean
{
val
buildRoot
=
GradleBuildRootsManager
.
getInstance
(
project
).
getScriptInfo
(
file
)?.
buildRoot
?:
return
false
return
GradleScriptDefinitionsContributor
.
getDefinitions
(
project
,
buildRoot
.
pathPrefix
,
buildRoot
.
data
.
gradleHome
)?.
any
{
KotlinScriptingSettings
.
getInstance
(
project
).
autoReloadConfigurations
(
it
)
}
?:
return
false
val
definition
=
file
.
findScriptDefinition
(
project
)
?:
return
false
return
KotlinScriptingSettings
.
getInstance
(
project
).
autoReloadConfigurations
(
definition
)
}
fun
scriptConfigurationsNeedToBeUpdated
(
project
:
Project
,
file
:
VirtualFile
)
{
if
(
autoReloadScriptConfigurations
(
project
,
file
))
{
runPartialGradleImport
(
project
)
GradleBuildRootsManager
.
getInstance
(
project
).
getScriptInfo
(
file
)?.
buildRoot
?.
let
{
runPartialGradleImport
(
project
,
it
)
}
}
else
{
//
notification
is
shown
in
LoadConfigurationAction
}
...
...
@@ -66,7 +73,11 @@ class LoadConfigurationAction : AnAction(
)
{
override
fun
actionPerformed
(
e
:
AnActionEvent
)
{
val
project
=
e
.
project
?:
return
runPartialGradleImport
(
project
)
val
editor
=
e
.
getData
(
CommonDataKeys
.
EDITOR
)
?:
return
val
file
=
getKotlinScriptFile
(
editor
)
?:
return
val
root
=
GradleBuildRootsManager
.
getInstance
(
project
).
getScriptInfo
(
file
)?.
buildRoot
?:
return
runPartialGradleImport
(
project
,
root
)
}
override
fun
update
(
e
:
AnActionEvent
)
{
...
...
idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptNotificationProvider.kt
浏览文件 @
bf1ad44a
...
...
@@ -49,18 +49,22 @@ class GradleScriptNotificationProvider(private val project: Project) :
wasNotImportedAfterCreation
->
EditorNotificationPanel
().
apply
{
text
(
KotlinIdeaGradleBundle
.
message
(
"notification.wasNotImportedAfterCreation.text"
))
createActionLabel
(
getMissingConfigurationActionText
())
{
runPartialGradleImport
(
project
)
val
root
=
scriptUnderRoot
.
nearest
if
(
root
!=
null
)
{
runPartialGradleImport
(
project
,
root
)
}
}
}
notEvaluatedInLastImport
->
EditorNotificationPanel
().
apply
{
text
(
KotlinIdeaGradleBundle
.
message
(
"notification.notEvaluatedInLastImport.text"
))
// suggest to reimport project if something changed after import
val
importTs
=
(
scriptUnderRoot
.
nearest
as
?
Imported
)
?.
data
?.
importTs
if
(
importTs
!=
null
&&
!
scriptUnderRoot
.
nearest
.
areRelatedFilesChangedBefore
(
file
,
importTs
))
{
val
root
=
scriptUnderRoot
.
nearest
as
?
Imported
val
importTs
=
root
?.
data
?.
importTs
if
(
root
!=
null
&&
importTs
!=
null
&&
!
root
.
areRelatedFilesChangedBefore
(
file
,
importTs
))
{
createActionLabel
(
getMissingConfigurationActionText
())
{
rootsManager
.
updateStandaloneScripts
{
runPartialGradleImport
(
project
)
runPartialGradleImport
(
project
,
root
)
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录