mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-05 01:50:56 +07:00
IDEA-300739 Do not create LangSupport instance during project opening
GitOrigin-RevId: 41a8fadefb8cb2d9a7b3be862b26da4b566fd9fa
This commit is contained in:
committed by
intellij-monorepo-bot
parent
d0ac7ac768
commit
5ae4a01bbd
@@ -50,13 +50,13 @@ class LangManager : SimplePersistentStateComponent<LangManager.State>(State()) {
|
||||
fun getInstance() = service<LangManager>()
|
||||
}
|
||||
|
||||
fun getLearningProjectPath(langSupport: LangSupport): String? =
|
||||
if (langSupport.useUserProjects) null
|
||||
else state.languageToProjectMap[langSupport.primaryLanguage]
|
||||
fun getLearningProjectPath(languageId: String): String? = state.languageToProjectMap[languageId]
|
||||
|
||||
fun setLearningProjectPath(langSupport: LangSupport, path: String) {
|
||||
state.languageToProjectMap[langSupport.primaryLanguage] = path
|
||||
state.intIncrementModificationCount()
|
||||
if (!langSupport.useUserProjects) {
|
||||
state.languageToProjectMap[langSupport.primaryLanguage] = path
|
||||
state.intIncrementModificationCount()
|
||||
}
|
||||
}
|
||||
|
||||
fun getLangSupportById(languageId: String): LangSupport? {
|
||||
|
||||
@@ -91,7 +91,7 @@ internal object OpenLessonActivities {
|
||||
val langSupport = LangManager.getInstance().getLangSupport() ?: throw Exception("Language for learning plugin is not defined")
|
||||
|
||||
var learnProject = LearningUiManager.learnProject
|
||||
if (learnProject != null && !isLearningProject(learnProject, langSupport)) {
|
||||
if (learnProject != null && !isLearningProject(learnProject, langSupport.primaryLanguage)) {
|
||||
learnProject = null // We are in the project from another course
|
||||
}
|
||||
LOG.debug("${projectWhereToStartLesson.name}: trying to get cached LearnProject ${learnProject != null}")
|
||||
@@ -110,7 +110,7 @@ internal object OpenLessonActivities {
|
||||
LOG.debug("The lesson opened in user project ${projectWhereToStartLesson.name}")
|
||||
}
|
||||
learnProject == null || learnProject.isDisposed -> {
|
||||
if (!isLearningProject(projectWhereToStartLesson, langSupport)) {
|
||||
if (!isLearningProject(projectWhereToStartLesson, langSupport.primaryLanguage)) {
|
||||
//1. learnProject == null and current project has different name then initLearnProject and register post startup open lesson
|
||||
LOG.debug("${projectWhereToStartLesson.name}: 1. learnProject is null or disposed")
|
||||
initLearnProject(projectWhereToStartLesson, null) {
|
||||
@@ -492,7 +492,7 @@ internal object OpenLessonActivities {
|
||||
|
||||
private fun findLearnProjectInOpenedProjects(langSupport: LangSupport): Project? {
|
||||
val openProjects = ProjectManager.getInstance().openProjects
|
||||
return openProjects.firstOrNull { isLearningProject(it, langSupport) }
|
||||
return openProjects.firstOrNull { isLearningProject(it, langSupport.primaryLanguage) }
|
||||
}
|
||||
|
||||
}
|
||||
@@ -74,7 +74,7 @@ object ProjectUtils {
|
||||
}
|
||||
|
||||
private fun getLearningInstallationContentRoot(langSupport: LangSupport): Path? {
|
||||
val storedProjectPath = LangManager.getInstance().getLearningProjectPath(langSupport)
|
||||
val storedProjectPath = LangManager.getInstance().getLearningProjectPath(langSupport.primaryLanguage)
|
||||
val path = if (storedProjectPath != null) langSupport.getContentRootPath(Paths.get(storedProjectPath)) else null
|
||||
val canonicalPlace = learningProjectsPath.resolve(langSupport.contentRootDirectoryName)
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@ import training.util.*
|
||||
|
||||
private class LearnProjectStateListener : ProjectManagerListener {
|
||||
override fun projectOpened(project: Project) {
|
||||
val langSupport = LangManager.getInstance().getLangSupport() ?: return
|
||||
if (isLearningProject(project, langSupport)) {
|
||||
val languageId = LangManager.getInstance().getLanguageId() ?: return
|
||||
if (isLearningProject(project, languageId)) {
|
||||
CloseProjectWindowHelper.SHOW_WELCOME_FRAME_FOR_PROJECT.set(project, true)
|
||||
removeFromRecentProjects(project)
|
||||
}
|
||||
@@ -42,15 +42,15 @@ private class LearnProjectStateListener : ProjectManagerListener {
|
||||
}
|
||||
|
||||
override fun projectClosingBeforeSave(project: Project) {
|
||||
val langSupport = LangManager.getInstance().getLangSupport() ?: return
|
||||
if (isLearningProject(project, langSupport) && !StatisticBase.isLearnProjectCloseLogged) {
|
||||
val languageId = LangManager.getInstance().getLanguageId() ?: return
|
||||
if (isLearningProject(project, languageId) && !StatisticBase.isLearnProjectCloseLogged) {
|
||||
StatisticBase.logLessonStopped(StatisticBase.LessonStopReason.CLOSE_PROJECT)
|
||||
}
|
||||
}
|
||||
|
||||
override fun projectClosed(project: Project) {
|
||||
val langSupport = LangManager.getInstance().getLangSupport() ?: return
|
||||
if (isLearningProject(project, langSupport)) {
|
||||
val languageId = LangManager.getInstance().getLanguageId() ?: return
|
||||
if (isLearningProject(project, languageId)) {
|
||||
StatisticBase.isLearnProjectCloseLogged = false
|
||||
removeFromRecentProjects(project)
|
||||
}
|
||||
|
||||
@@ -248,8 +248,8 @@ internal class StatisticBase : CounterUsagesCollector() {
|
||||
|
||||
fun logLearnProjectOpenedForTheFirstTime(way: LearnProjectOpeningWay) {
|
||||
val langManager = LangManager.getInstance()
|
||||
val langSupport = langManager.getLangSupport() ?: return
|
||||
if (langManager.getLearningProjectPath(langSupport) == null) {
|
||||
val languageId = langManager.getLanguageId() ?: return
|
||||
if (langManager.getLearningProjectPath(languageId) == null) {
|
||||
LearnProjectState.instance.firstTimeOpenedWay = way
|
||||
learnProjectOpenedFirstTimeEvent.log(way, courseLanguage())
|
||||
}
|
||||
|
||||
@@ -205,7 +205,7 @@ internal class LearnPanel(val learnToolWindow: LearnToolWindow) : JPanel() {
|
||||
langSupport.onboardingFeedbackData = null
|
||||
}
|
||||
|
||||
if (langSupport != null && isLearningProject(project, langSupport)) {
|
||||
if (langSupport != null && isLearningProject(project, langSupport.primaryLanguage)) {
|
||||
CloseProjectWindowHelper().windowClosing(project)
|
||||
} else {
|
||||
LearningUiManager.resetModulesView()
|
||||
|
||||
@@ -116,15 +116,15 @@ internal fun resetPrimaryLanguage(newLanguageId: String): Boolean {
|
||||
}
|
||||
|
||||
fun findLanguageSupport(project: Project): LangSupport? {
|
||||
val langSupport = LangManager.getInstance().getLangSupport() ?: return null
|
||||
if (isLearningProject(project, langSupport)) {
|
||||
return langSupport
|
||||
val languageId = LangManager.getInstance().getLanguageId() ?: return null
|
||||
if (isLearningProject(project, languageId)) {
|
||||
return LangManager.getInstance().getLangSupport()
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
fun isLearningProject(project: Project, langSupport: LangSupport): Boolean {
|
||||
return FileUtil.pathsEqual(project.basePath, LangManager.getInstance().getLearningProjectPath(langSupport))
|
||||
fun isLearningProject(project: Project, languageId: String): Boolean {
|
||||
return FileUtil.pathsEqual(project.basePath, LangManager.getInstance().getLearningProjectPath(languageId))
|
||||
}
|
||||
|
||||
fun getFeedbackLink(langSupport: LangSupport, ownRegistry: Boolean): String? {
|
||||
|
||||
@@ -154,7 +154,7 @@ abstract class PythonBasedLangSupport : AbstractLangSupport() {
|
||||
val module = project.modules.singleOrNull() ?: return@addCallback
|
||||
PyInterpreterInspection.InterpreterSettingsQuickFix.showPythonInterpreterSettings(project, module)
|
||||
}
|
||||
if (useUserProjects || isLearningProject(project, this@PythonBasedLangSupport)) {
|
||||
if (useUserProjects || isLearningProject(project, primaryLanguage)) {
|
||||
showWarning(PythonLessonsBundle.message("no.interpreter.in.learning.project", configureCallbackId),
|
||||
problem = LearningInternalProblems.NO_SDK_CONFIGURED) {
|
||||
!isSdkConfigured(project)
|
||||
|
||||
Reference in New Issue
Block a user