From 472fff60b8228a95e29eeeb70c652c47f1ca041d Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Tue, 27 Oct 2015 20:34:12 +0300 Subject: [PATCH] TextMate: add support for language injection (IntelliLang inspection) --- .../inject/java/validation/UnknownLanguageID.java | 7 ++++--- .../plugins/intelliLang/inject/InjectorUtils.java | 8 ++++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/inject/java/validation/UnknownLanguageID.java b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/inject/java/validation/UnknownLanguageID.java index 8e33447dba20..49d1943bd2d9 100644 --- a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/inject/java/validation/UnknownLanguageID.java +++ b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/inject/java/validation/UnknownLanguageID.java @@ -19,11 +19,11 @@ import com.intellij.codeHighlighting.HighlightDisplayLevel; import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.codeInspection.ProblemHighlightType; import com.intellij.codeInspection.ProblemsHolder; +import com.intellij.lang.Language; import com.intellij.psi.*; -import com.intellij.psi.injection.ReferenceInjector; import com.intellij.psi.util.PsiTreeUtil; import org.intellij.plugins.intelliLang.Configuration; -import org.intellij.plugins.intelliLang.inject.InjectedLanguage; +import org.intellij.plugins.intelliLang.inject.InjectorUtils; import org.intellij.plugins.intelliLang.pattern.PatternValidator; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -68,7 +68,8 @@ public class UnknownLanguageID extends LocalInspectionTool { final Object id = JavaPsiFacade.getInstance(expression.getProject()). getConstantEvaluationHelper().computeConstantExpression(expression); if (id instanceof String) { - if (InjectedLanguage.findLanguageById((String)id) == null && ReferenceInjector.findById((String)id) == null) { + Language language = InjectorUtils.getLanguageByString((String)id); + if (language == null) { holder.registerProblem(expression, "Unknown language '" + id + "'", ProblemHighlightType.LIKE_UNKNOWN_SYMBOL); } } diff --git a/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/InjectorUtils.java b/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/InjectorUtils.java index d4c779571af5..2960fc24f486 100644 --- a/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/InjectorUtils.java +++ b/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/InjectorUtils.java @@ -67,13 +67,17 @@ public class InjectorUtils { @Nullable public static Language getLanguage(@NotNull BaseInjection injection) { - String languageId = injection.getInjectedLanguageId(); + return getLanguageByString(injection.getInjectedLanguageId()); + } + + @Nullable + public static Language getLanguageByString(String languageId) { Language language = InjectedLanguage.findLanguageById(languageId); if (language != null) return language; ReferenceInjector injector = ReferenceInjector.findById(languageId); if (injector != null) return injector.toLanguage(); FileType fileType = FileTypeManager.getInstance().getFileTypeByExtension(languageId); - return fileType instanceof LanguageFileType? ((LanguageFileType)fileType).getLanguage() : null; + return fileType instanceof LanguageFileType ? ((LanguageFileType)fileType).getLanguage() : null; } public static boolean registerInjectionSimple(@NotNull PsiLanguageInjectionHost host,