From d536a33fd22fb0f00576a38aafcb759b1a060929 Mon Sep 17 00:00:00 2001 From: Evgenii Novozhilov Date: Wed, 16 Oct 2024 19:27:15 +0300 Subject: [PATCH] Decorate tabs for BUILD files with package name Since BUILD files all have the same name it's hard to distinguish them, so we can use EditorTabTitleProvider to write full label in the editor tab title --- base/src/META-INF/blaze-base.xml | 1 + .../editor/BazelEditorTabTitleProvider.java | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 base/src/com/google/idea/blaze/base/editor/BazelEditorTabTitleProvider.java diff --git a/base/src/META-INF/blaze-base.xml b/base/src/META-INF/blaze-base.xml index 620b28d071d..0b662167bf9 100644 --- a/base/src/META-INF/blaze-base.xml +++ b/base/src/META-INF/blaze-base.xml @@ -462,6 +462,7 @@ + diff --git a/base/src/com/google/idea/blaze/base/editor/BazelEditorTabTitleProvider.java b/base/src/com/google/idea/blaze/base/editor/BazelEditorTabTitleProvider.java new file mode 100644 index 00000000000..6f6e79e117a --- /dev/null +++ b/base/src/com/google/idea/blaze/base/editor/BazelEditorTabTitleProvider.java @@ -0,0 +1,31 @@ +package com.google.idea.blaze.base.editor; + +import com.google.idea.blaze.base.lang.buildfile.psi.BuildFile; +import com.google.idea.blaze.base.settings.Blaze; +import com.intellij.openapi.fileEditor.impl.EditorTabTitleProvider; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.vfs.VirtualFile; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class BazelEditorTabTitleProvider implements EditorTabTitleProvider { + private static boolean requiresDecoration(Project project, String fileName) { + return Blaze.getBuildSystemProvider(project).possibleBuildFileNames().contains(fileName); + } + @Override + public @Nullable String getEditorTabTitle(@NotNull Project project, + @NotNull VirtualFile virtualFile) { + var fileName = virtualFile.getName(); + if (!requiresDecoration(project, fileName)) { + return null; + } + + return BuildFile.getBuildFileString(project, virtualFile.getPath()); + } + + @Override + public @Nullable String getEditorTabTooltipText(@NotNull Project project, + @NotNull VirtualFile virtualFile) { + return EditorTabTitleProvider.super.getEditorTabTooltipText(project, virtualFile); + } +}