diff --git a/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaInjectorBase.java b/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaInjectorBase.java index 7824d5a2aac2..1f2c89672434 100644 --- a/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaInjectorBase.java +++ b/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaInjectorBase.java @@ -34,6 +34,11 @@ public abstract class JsonSchemaInjectorBase implements MultiHostInjector { return language.getID(); } + @Override + public @NotNull Language getInjectedLanguage() { + return language; + } + @Override public @NotNull String getPrefix() { return StringUtil.notNullize(prefix) ; diff --git a/platform/core-api/src/com/intellij/lang/injection/general/Injection.java b/platform/core-api/src/com/intellij/lang/injection/general/Injection.java index c59bb583b45a..cce259da99be 100644 --- a/platform/core-api/src/com/intellij/lang/injection/general/Injection.java +++ b/platform/core-api/src/com/intellij/lang/injection/general/Injection.java @@ -1,6 +1,7 @@ // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.lang.injection.general; +import com.intellij.lang.Language; import com.intellij.openapi.util.NlsSafe; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; @@ -15,6 +16,9 @@ public interface Injection { @NotNull @NlsSafe String getInjectedLanguageId(); + + @Nullable + Language getInjectedLanguage(); /** * @return a string (in the injected language), which is prepended to the code in the host literal to form a parseable code fragment. diff --git a/platform/core-api/src/com/intellij/lang/injection/general/SimpleInjection.java b/platform/core-api/src/com/intellij/lang/injection/general/SimpleInjection.java index 5d409cacfe4f..fa6d5408259c 100644 --- a/platform/core-api/src/com/intellij/lang/injection/general/SimpleInjection.java +++ b/platform/core-api/src/com/intellij/lang/injection/general/SimpleInjection.java @@ -1,19 +1,20 @@ // Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.lang.injection.general; +import com.intellij.lang.Language; import com.intellij.openapi.util.NlsSafe; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class SimpleInjection implements Injection { - private final String injectedId; + private final Language language; private final String prefix; private final String suffix; private final String supportId; - public SimpleInjection(@NotNull String injectedId, @NotNull String prefix, @NotNull String suffix, @Nullable String supportId) { - this.injectedId = injectedId; + public SimpleInjection(@NotNull Language language, @NotNull String prefix, @NotNull String suffix, @Nullable String supportId) { + this.language = language; this.prefix = prefix; this.suffix = suffix; this.supportId = supportId; @@ -21,7 +22,12 @@ public class SimpleInjection implements Injection { @Override public @NotNull @NlsSafe String getInjectedLanguageId() { - return injectedId; + return language.getID(); + } + + @Override + public Language getInjectedLanguage() { + return language; } @Override diff --git a/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/TemporaryPlacesInjector.java b/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/TemporaryPlacesInjector.java index e75ca63fcb21..0262f9510ade 100644 --- a/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/TemporaryPlacesInjector.java +++ b/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/TemporaryPlacesInjector.java @@ -28,7 +28,7 @@ public final class TemporaryPlacesInjector implements LanguageInjectionContribut Language language = injectedLanguage != null ? injectedLanguage.getLanguage() : null; if (language == null) return null; - return new SimpleInjection(language.getID(), + return new SimpleInjection(language, injectedLanguage.getPrefix(), injectedLanguage.getSuffix(), registry.getLanguageInjectionSupport().getId()); diff --git a/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/config/BaseInjection.java b/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/config/BaseInjection.java index c76b9a52284d..af82084449b8 100644 --- a/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/config/BaseInjection.java +++ b/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/config/BaseInjection.java @@ -83,9 +83,9 @@ public class BaseInjection implements Injection, PersistentStateComponent\nboo\n") } + + fun testBashCommentInjection() { + myFixture.configureByText("test.yaml", """ + # language=bash + commands: + - sudo rm -rf / + - df -h + """.trimIndent()) + + myInjectionFixture.assertInjected( + injectionForHost("sudo rm -rf /").hasLanguage("Shell Script"), + injectionForHost("df -h").hasLanguage("Shell Script"), + ) + } fun testFoldedXmlInjection() {