mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-84747: Do not create welcome main.py file for the welcome project
GitOrigin-RevId: 561d1439ba9b126e239187aa18ff1f7485ed35bd
This commit is contained in:
committed by
intellij-monorepo-bot
parent
e2861098b8
commit
120fc27a41
@@ -10,10 +10,10 @@ import com.intellij.openapi.diagnostic.fileLogger
|
||||
import com.intellij.openapi.diagnostic.thisLogger
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.project.ex.ProjectManagerEx
|
||||
import com.intellij.openapi.project.guessProjectDir
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.vfs.VfsUtil
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.openapi.wm.ex.WelcomeScreenProjectProvider
|
||||
import com.intellij.platform.ide.progress.ModalTaskOwner
|
||||
import com.intellij.platform.ide.progress.TaskCancellation
|
||||
import com.intellij.platform.ide.progress.runWithModalProgressBlocking
|
||||
@@ -25,7 +25,6 @@ import com.intellij.pycharm.community.ide.impl.miscProject.MiscFileType
|
||||
import com.intellij.pycharm.community.ide.impl.miscProject.TemplateFileName
|
||||
import com.intellij.python.community.services.systemPython.SystemPythonService
|
||||
import com.intellij.util.SystemProperties
|
||||
import com.intellij.util.concurrency.annotations.RequiresEdt
|
||||
import com.jetbrains.python.PyBundle
|
||||
import com.jetbrains.python.Result
|
||||
import com.jetbrains.python.errorProcessing.MessageError
|
||||
@@ -42,13 +41,14 @@ import kotlin.io.path.createDirectories
|
||||
import kotlin.io.path.createFile
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
|
||||
internal const val MISC_PROJECT_NAME: String = "Welcome"
|
||||
internal const val MISC_PROJECT_WITH_WELCOME_NAME: String = "Welcome"
|
||||
internal const val MISC_PROJECT_NAME = "PyCharmMiscProject"
|
||||
|
||||
internal val miscProjectDefaultPath: Path
|
||||
get() {
|
||||
val default = GeneralLocalSettings.getInstance().defaultProjectDirectory
|
||||
val directory = if (default.isEmpty()) Path.of(SystemProperties.getUserHome()) else Path.of(default)
|
||||
return directory.resolve("PyCharmMiscProject")
|
||||
return directory.resolve(MISC_PROJECT_NAME)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -145,8 +145,8 @@ private suspend fun createProjectAndSdk(
|
||||
systemPythonService: SystemPythonService,
|
||||
currentProject: Project?,
|
||||
): PyResult<Pair<Project, Sdk>> {
|
||||
val isCurrentProjectIsAlreadyMiscProject = currentProject?.name == MISC_PROJECT_NAME
|
||||
val project = if (isCurrentProjectIsAlreadyMiscProject) {
|
||||
val isAlreadyMiscOrWelcomeScreenProject = currentProject != null && WelcomeScreenProjectProvider.isWelcomeScreenProject(currentProject)
|
||||
val project = if (isAlreadyMiscOrWelcomeScreenProject) {
|
||||
currentProject
|
||||
} else {
|
||||
openProject(projectPath)
|
||||
@@ -174,8 +174,6 @@ private suspend fun openProject(projectPath: Path): Project {
|
||||
val project = projectManager.openProjectAsync(projectPath, OpenProjectTask {
|
||||
runConfigurators = false
|
||||
isProjectCreatedWithWizard = true
|
||||
projectName = MISC_PROJECT_NAME
|
||||
|
||||
}) ?: error("Failed to open project in $projectPath, check logs")
|
||||
// There are countless numbers of reasons `openProjectAsync` might return null
|
||||
|
||||
|
||||
+2
-1
@@ -31,6 +31,7 @@ import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.openapi.wm.ToolWindowId
|
||||
import com.intellij.openapi.wm.ToolWindowManager
|
||||
import com.intellij.openapi.wm.ex.ToolWindowManagerListener
|
||||
import com.intellij.openapi.wm.ex.WelcomeScreenProjectProvider
|
||||
import com.intellij.platform.DirectoryProjectConfigurator
|
||||
import com.intellij.psi.PsiDocumentManager
|
||||
import com.intellij.psi.PsiFile
|
||||
@@ -57,7 +58,7 @@ internal class PyWelcomeConfigurator : DirectoryProjectConfigurator {
|
||||
get() = false
|
||||
|
||||
override fun configureProject(project: Project, baseDir: VirtualFile, moduleRef: Ref<Module>, isProjectCreatedWithWizard: Boolean) {
|
||||
if (isProjectCreatedWithWizard || isInsideTempDirectory(baseDir)) {
|
||||
if (isProjectCreatedWithWizard || isInsideTempDirectory(baseDir) || WelcomeScreenProjectProvider.isWelcomeScreenProject(project)) {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
+7
-4
@@ -5,15 +5,18 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.project.ex.ProjectEx
|
||||
import com.intellij.openapi.wm.ex.WelcomeScreenProjectProvider
|
||||
import com.intellij.pycharm.community.ide.impl.miscProject.impl.MISC_PROJECT_NAME
|
||||
import com.intellij.pycharm.community.ide.impl.miscProject.impl.MISC_PROJECT_WITH_WELCOME_NAME
|
||||
import com.intellij.pycharm.community.ide.impl.miscProject.impl.miscProjectDefaultPath
|
||||
import java.nio.file.Path
|
||||
|
||||
private class PyCharmWelcomeScreenProjectProvider : WelcomeScreenProjectProvider() {
|
||||
override fun getWelcomeScreenProjectName(): String = MISC_PROJECT_NAME
|
||||
override fun getWelcomeScreenProjectName(): String = MISC_PROJECT_WITH_WELCOME_NAME
|
||||
|
||||
override fun getWelcomeScreenProjectPath(): Path = miscProjectDefaultPath
|
||||
|
||||
override fun doIsWelcomeScreenProject(project: Project): Boolean = project.name == MISC_PROJECT_NAME
|
||||
override fun doIsWelcomeScreenProject(project: Project): Boolean {
|
||||
return project.name == MISC_PROJECT_WITH_WELCOME_NAME || project.name == MISC_PROJECT_NAME
|
||||
}
|
||||
|
||||
override fun doIsForceDisabledFileColors(): Boolean = true
|
||||
|
||||
@@ -23,8 +26,8 @@ private class PyCharmWelcomeScreenProjectProvider : WelcomeScreenProjectProvider
|
||||
val project = super.doCreateOrOpenWelcomeScreenProject(path)
|
||||
// The name might be a MiscProject, since we are reusing that project.
|
||||
// We have to rename it to Welcome.
|
||||
if (project.name != MISC_PROJECT_NAME && project is ProjectEx) {
|
||||
project.setProjectName(MISC_PROJECT_NAME)
|
||||
if (project.name != MISC_PROJECT_WITH_WELCOME_NAME && project is ProjectEx) {
|
||||
project.setProjectName(MISC_PROJECT_WITH_WELCOME_NAME)
|
||||
project.save()
|
||||
}
|
||||
return project
|
||||
|
||||
Reference in New Issue
Block a user