PY-84747: Do not create welcome main.py file for the welcome project

GitOrigin-RevId: 561d1439ba9b126e239187aa18ff1f7485ed35bd
This commit is contained in:
Ilia Zakoulov
2025-10-13 21:56:06 +00:00
committed by intellij-monorepo-bot
parent e2861098b8
commit 120fc27a41
3 changed files with 15 additions and 13 deletions
@@ -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
@@ -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
}
@@ -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