mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
derived xml languages becomes explicit dialects
This commit is contained in:
@@ -26,10 +26,7 @@ import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* The base class for all programming language support implementations. Specific language implementations should inherit from this class
|
||||
@@ -48,6 +45,7 @@ public abstract class Language extends UserDataHolderBase {
|
||||
private final Language myBaseLanguage;
|
||||
private final String myID;
|
||||
private final String[] myMimeTypes;
|
||||
private List<Language> myDialects = new ArrayList<Language>();
|
||||
public static final Language ANY = new Language("") {
|
||||
@Override
|
||||
public String toString() {
|
||||
@@ -78,6 +76,9 @@ public abstract class Language extends UserDataHolderBase {
|
||||
if (prev != null) {
|
||||
LOG.error("Language with ID '" + ID + "' is already registered: "+prev.getClass());
|
||||
}
|
||||
if (baseLanguage != null) {
|
||||
baseLanguage.myDialects.add(this);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -166,6 +167,10 @@ public abstract class Language extends UserDataHolderBase {
|
||||
return false;
|
||||
}
|
||||
|
||||
public List<Language> getDialects() {
|
||||
return myDialects;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static Language findLanguageByID(String id) {
|
||||
final Collection<Language> languages = getRegisteredLanguages();
|
||||
|
||||
+11
-4
@@ -218,16 +218,23 @@ public class LocalInspectionsPass extends ProgressableTextEditorHighlightingPass
|
||||
Divider.divideInsideAndOutside(myFile, myStartOffset, myEndOffset, myPriorityRange, inside, outside,
|
||||
HighlightLevelUtil.AnalysisLevel.HIGHLIGHT_AND_INSPECT,true);
|
||||
|
||||
Set<String> languages = new HashSet<String>();
|
||||
Set<Language> languages = new HashSet<Language>();
|
||||
for (PsiElement element : inside) {
|
||||
languages.add(element.getLanguage().getID());
|
||||
languages.add(element.getLanguage());
|
||||
}
|
||||
for (PsiElement element : outside) {
|
||||
languages.add(element.getLanguage().getID());
|
||||
languages.add(element.getLanguage());
|
||||
}
|
||||
Set<String> langIds = new HashSet<String>();
|
||||
for (Language language : languages) {
|
||||
langIds.add(language.getID());
|
||||
for (Language dialect : language.getDialects()) {
|
||||
langIds.add(dialect.getID());
|
||||
}
|
||||
}
|
||||
List<LocalInspectionTool> tools = new ArrayList<LocalInspectionTool>();
|
||||
for (LocalInspectionToolWrapper wrapper : toolWrappers) {
|
||||
if (wrapper.getLanguage() == null || languages.contains(wrapper.getLanguage())) {
|
||||
if (wrapper.getLanguage() == null || langIds.contains(wrapper.getLanguage())) {
|
||||
LocalInspectionTool tool = wrapper.getTool();
|
||||
if (!checkDumbAwareness || tool instanceof DumbAware) {
|
||||
tools.add(tool);
|
||||
|
||||
@@ -31,7 +31,7 @@ public class HTMLLanguage extends XMLLanguage {
|
||||
public static final HTMLLanguage INSTANCE = new HTMLLanguage();
|
||||
|
||||
private HTMLLanguage() {
|
||||
super("HTML", "text/html", "text/htmlh");
|
||||
super(XMLLanguage.INSTANCE, "HTML", "text/html", "text/htmlh");
|
||||
SyntaxHighlighterFactory.LANGUAGE_FACTORY.addExplicitExtension(this, new SingleLazyInstanceSyntaxHighlighterFactory() {
|
||||
@NotNull
|
||||
protected SyntaxHighlighter createHighlighter() {
|
||||
|
||||
@@ -31,7 +31,7 @@ public class XHTMLLanguage extends XMLLanguage {
|
||||
public static final XHTMLLanguage INSTANCE = new XHTMLLanguage();
|
||||
|
||||
private XHTMLLanguage() {
|
||||
super("XHTML", "text/xhtml", "application/xhtml+xml");
|
||||
super(XMLLanguage.INSTANCE, "XHTML", "text/xhtml", "application/xhtml+xml");
|
||||
SyntaxHighlighterFactory.LANGUAGE_FACTORY.addExplicitExtension(this, new SingleLazyInstanceSyntaxHighlighterFactory() {
|
||||
@NotNull
|
||||
protected SyntaxHighlighter createHighlighter() {
|
||||
|
||||
@@ -38,7 +38,7 @@ public class XMLLanguage extends CompositeLanguage {
|
||||
protected static final EncodeEachSymbolPolicy ENCODE_EACH_SYMBOL_POLICY = new EncodeEachSymbolPolicy();
|
||||
|
||||
private XMLLanguage() {
|
||||
this("XML", "text/xml");
|
||||
super("XML", "text/xml");
|
||||
|
||||
SyntaxHighlighterFactory.LANGUAGE_FACTORY.addExplicitExtension(this, new SingleLazyInstanceSyntaxHighlighterFactory() {
|
||||
@NotNull
|
||||
@@ -48,6 +48,7 @@ public class XMLLanguage extends CompositeLanguage {
|
||||
});
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
protected XMLLanguage(@NonNls String name, @NonNls String... mime) {
|
||||
super(name, mime);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user