IDEA-97264 IntelliLang support for "Path to File" language: settings

This commit is contained in:
Dmitry Avdeev
2013-08-05 13:30:19 +04:00
parent ab0bfc0eca
commit bab47cfcf0
2 changed files with 17 additions and 4 deletions
@@ -55,6 +55,7 @@ import org.intellij.plugins.intelliLang.inject.InjectorUtils;
import org.intellij.plugins.intelliLang.inject.LanguageInjectionSupport;
import org.intellij.plugins.intelliLang.inject.config.BaseInjection;
import org.intellij.plugins.intelliLang.inject.config.InjectionPlace;
import org.intellij.plugins.intelliLang.references.ReferenceInjector;
import org.jdom.Document;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
@@ -869,12 +870,13 @@ public class InjectionsSettingsUI implements SearchableConfigurable.Parent, NonD
originalInjections = new ArrayList<BaseInjection>(ContainerUtil
.concat(InjectorUtils.getActiveInjectionSupportIds(), new Function<String, Collection<? extends BaseInjection>>() {
public Collection<? extends BaseInjection> fun(final String s) {
return ContainerUtil.findAll(
List<BaseInjection> injections =
CfgInfo.this.cfg instanceof Configuration.Prj ? ((Configuration.Prj)CfgInfo.this.cfg).getOwnInjections(s) : CfgInfo.this.cfg
.getInjections(s),
new Condition<BaseInjection>() {
.getInjections(s);
return ContainerUtil.findAll(injections, new Condition<BaseInjection>() {
public boolean value(final BaseInjection injection) {
return InjectedLanguage.findLanguageById(injection.getInjectedLanguageId()) != null;
String id = injection.getInjectedLanguageId();
return InjectedLanguage.findLanguageById(id) != null || ReferenceInjector.findById(id) != null;
}
});
}
@@ -17,10 +17,12 @@ package org.intellij.plugins.intelliLang.references;
import com.intellij.lang.Language;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiReference;
import com.intellij.util.ProcessingContext;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
/**
@@ -38,4 +40,13 @@ public abstract class ReferenceInjector extends Injectable {
@NotNull
public abstract PsiReference[] getReferences(@NotNull PsiElement element, @NotNull final ProcessingContext context, @NotNull TextRange range);
public static ReferenceInjector findById(final String id) {
return ContainerUtil.find(EXTENSION_POINT_NAME.getExtensions(), new Condition<ReferenceInjector>() {
@Override
public boolean value(ReferenceInjector injector) {
return id.equals(injector.getId());
}
});
}
}