mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
TextMate: add support for language injection (IntelliLang inspection)
This commit is contained in:
+4
-3
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user