From 6fdea4f0439383646b0ac05240af1cac57ed1ca3 Mon Sep 17 00:00:00 2001 From: dkashyn Date: Mon, 7 Aug 2023 07:32:00 -0400 Subject: [PATCH 1/2] - Allow to suppress automatic Bazel project opening if `.ijwb` or so already exists by setting `bazel.project.auto.open.if.present` to `false` - Avoid activation of Bazel project auto import if `.ijwb` or other model that corresponds to current Bazel project mode is present. --- .../project/AutoImportProjectOpenProcessor.java | 13 +++++-------- .../base/project/BlazeProjectOpenProcessor.java | 5 +++-- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/base/src/com/google/idea/blaze/base/project/AutoImportProjectOpenProcessor.java b/base/src/com/google/idea/blaze/base/project/AutoImportProjectOpenProcessor.java index 212d0958f08..d7fc32ae2fa 100644 --- a/base/src/com/google/idea/blaze/base/project/AutoImportProjectOpenProcessor.java +++ b/base/src/com/google/idea/blaze/base/project/AutoImportProjectOpenProcessor.java @@ -1,16 +1,12 @@ package com.google.idea.blaze.base.project; -import com.google.idea.blaze.base.model.primitives.WorkspacePath; +import static com.google.idea.blaze.base.project.BlazeProjectOpenProcessor.getIdeaSubdirectory; + import com.google.idea.blaze.base.model.primitives.WorkspaceRoot; import com.google.idea.blaze.base.projectview.ProjectView; import com.google.idea.blaze.base.projectview.ProjectView.Builder; import com.google.idea.blaze.base.projectview.ProjectViewSet; import com.google.idea.blaze.base.projectview.parser.ProjectViewParser; -import com.google.idea.blaze.base.projectview.section.ListSection; -import com.google.idea.blaze.base.projectview.section.ScalarSection; -import com.google.idea.blaze.base.projectview.section.sections.AutomaticallyDeriveTargetsSection; -import com.google.idea.blaze.base.projectview.section.sections.DirectoryEntry; -import com.google.idea.blaze.base.projectview.section.sections.DirectorySection; import com.google.idea.blaze.base.projectview.section.sections.TextBlock; import com.google.idea.blaze.base.projectview.section.sections.TextBlockSection; import com.google.idea.blaze.base.settings.Blaze; @@ -24,7 +20,6 @@ import com.google.idea.blaze.base.wizard2.WorkspaceTypeData; import com.google.idea.sdkcompat.general.BaseSdkCompat; import com.intellij.ide.SaveAndSyncHandler; -import com.intellij.ide.impl.OpenProjectTask; import com.intellij.ide.impl.ProjectUtil; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; @@ -89,8 +84,10 @@ public boolean lookForProjectsInDirectory() { @Override public boolean canOpenProject(@NotNull VirtualFile virtualFile) { + // Auto import activated only if it is not disabled, there is no existing project model in the folder + // and Bazel workspace is detected. return !Registry.is("bazel.auto.import.disabled") - && isBazelWorkspace(virtualFile); + && getIdeaSubdirectory(virtualFile) == null && isBazelWorkspace(virtualFile); } private boolean isBazelWorkspace(VirtualFile virtualFile) { diff --git a/base/src/com/google/idea/blaze/base/project/BlazeProjectOpenProcessor.java b/base/src/com/google/idea/blaze/base/project/BlazeProjectOpenProcessor.java index 2fc16fe9097..fa669760757 100644 --- a/base/src/com/google/idea/blaze/base/project/BlazeProjectOpenProcessor.java +++ b/base/src/com/google/idea/blaze/base/project/BlazeProjectOpenProcessor.java @@ -19,6 +19,7 @@ import com.google.idea.blaze.base.sync.data.BlazeDataStorage; import com.google.idea.sdkcompat.general.BaseSdkCompat; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.projectImport.ProjectOpenProcessor; import icons.BlazeIcons; @@ -42,7 +43,7 @@ public Icon getIcon() { private static final String DEPRECATED_PROJECT_DATA_SUBDIRECTORY = ".project"; @Nullable - private static VirtualFile getIdeaSubdirectory(VirtualFile file) { + public static VirtualFile getIdeaSubdirectory(VirtualFile file) { VirtualFile projectSubdirectory = file.findChild(BlazeDataStorage.PROJECT_DATA_SUBDIRECTORY); if (projectSubdirectory == null || !projectSubdirectory.isDirectory()) { projectSubdirectory = file.findChild(DEPRECATED_PROJECT_DATA_SUBDIRECTORY); @@ -68,7 +69,7 @@ public boolean canOpenProject(VirtualFile file) { @Override public boolean isStrongProjectInfoHolder() { - return true; + return Registry.is("bazel.project.auto.open.if.present", true); } @Override From 55e6d80aab73cc248632baf3ed8db3e0f2b9514d Mon Sep 17 00:00:00 2001 From: dkashyn Date: Thu, 10 Aug 2023 13:23:15 -0400 Subject: [PATCH 2/2] Registry key declaration --- base/src/META-INF/blaze-base.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/base/src/META-INF/blaze-base.xml b/base/src/META-INF/blaze-base.xml index 04da8ba721c..c7773d54833 100644 --- a/base/src/META-INF/blaze-base.xml +++ b/base/src/META-INF/blaze-base.xml @@ -345,6 +345,9 @@ +