diff --git a/platform/lang-api/resources/messages/LangBundle.properties b/platform/lang-api/resources/messages/LangBundle.properties index 6e2f967c9b52..b31328f9f43f 100644 --- a/platform/lang-api/resources/messages/LangBundle.properties +++ b/platform/lang-api/resources/messages/LangBundle.properties @@ -612,3 +612,5 @@ language.services.widget.item.initializing={0} | Initializing\u2026 language.services.widget.item.shutdown.normally={0} | Stopped language.services.widget.item.shutdown.unexpectedly={0} | Terminated language.services.widget.open.settings.action=Open Settings + +navBar.element.injected.file= \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/ide/navbar/impl/DefaultNavBarItem.kt b/platform/lang-impl/src/com/intellij/ide/navbar/impl/DefaultNavBarItem.kt index 4eb0971cb6ce..336945ff09a5 100644 --- a/platform/lang-impl/src/com/intellij/ide/navbar/impl/DefaultNavBarItem.kt +++ b/platform/lang-impl/src/com/intellij/ide/navbar/impl/DefaultNavBarItem.kt @@ -7,6 +7,8 @@ import com.intellij.ide.navbar.NavBarItemPresentation import com.intellij.ide.navigationToolbar.NavBarModelExtension import com.intellij.ide.projectView.ProjectView import com.intellij.ide.projectView.impl.ProjectRootsUtil +import com.intellij.injected.editor.VirtualFileWindow +import com.intellij.lang.LangBundle import com.intellij.model.Pointer import com.intellij.model.Pointer.hardPointer import com.intellij.openapi.editor.colors.CodeInsightColors.ERRORS_ATTRIBUTES @@ -34,6 +36,7 @@ import com.intellij.refactoring.suggested.createSmartPointer import com.intellij.ui.SimpleTextAttributes import com.intellij.ui.SimpleTextAttributes.* import com.intellij.util.IconUtil +import com.intellij.util.asSafely import com.intellij.util.concurrency.annotations.RequiresBackgroundThread import com.intellij.util.concurrency.annotations.RequiresReadLock import com.intellij.util.ui.JBUI @@ -132,6 +135,24 @@ internal class ModuleNavBarItem(data: Module) : DefaultNavBarItem(data), internal class PsiNavBarItem(data: PsiElement, val ownerExtension: NavBarModelExtension?) : DefaultNavBarItem( data) { + override fun presentation(): NavBarItemPresentation { + if (data is PsiFile) { + data.virtualFile + ?.asSafely() + ?.let { + return NavBarItemPresentation( + getIcon(), + LangBundle.message("navBar.element.injected.file", data.language.displayName), + null, + REGULAR_ITALIC_ATTRIBUTES, + REGULAR_ITALIC_ATTRIBUTES, + true + ) + } + } + return super.presentation() + } + override fun createPointer(): Pointer { val data = data val ownerExtension = ownerExtension diff --git a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/DefaultNavBarExtension.java b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/DefaultNavBarExtension.java index 62f28f21b833..fa64c11b07f6 100644 --- a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/DefaultNavBarExtension.java +++ b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/DefaultNavBarExtension.java @@ -3,6 +3,8 @@ package com.intellij.ide.navigationToolbar; import com.intellij.codeInsight.CodeInsightBundle; import com.intellij.ide.scratch.RootType; +import com.intellij.injected.editor.VirtualFileWindow; +import com.intellij.lang.injection.InjectedLanguageManager; import com.intellij.openapi.application.ReadAction; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; @@ -146,6 +148,9 @@ public class DefaultNavBarExtension extends AbstractNavBarModelExtension { if (containingDirectory != null) { return containingDirectory; } + if (containingFile.getVirtualFile() instanceof VirtualFileWindow) { + return InjectedLanguageManager.getInstance(psiElement.getProject()).getTopLevelFile(containingFile); + } } else if (psiElement instanceof PsiDirectory psiDirectory) { Project project = psiElement.getProject();