package org.netbeans.freemarker.lexer;
import org.netbeans.api.editor.mimelookup.MimeLookup;
import org.netbeans.api.lexer.InputAttributes;
import org.netbeans.api.lexer.Language;
import org.netbeans.api.lexer.LanguagePath;
import org.netbeans.api.lexer.Token;
import org.netbeans.freemarker.panel.FTLPanel;
import org.netbeans.spi.lexer.LanguageEmbedding;
import org.netbeans.spi.lexer.LanguageProvider;
import org.openide.util.NbPreferences;
import org.openide.util.lookup.ServiceProvider;
@ServiceProvider(service = LanguageProvider.class)
public class HTMLEmbeddingLanguageProvider extends LanguageProvider {
@Override
public Language<?> findLanguage(String mimeType) {
return null;
}
@Override
public LanguageEmbedding<?> findLanguageEmbedding(Token<?> token,
LanguagePath languagePath, InputAttributes inputAttributes) {
String embeddedMime = NbPreferences.forModule(FTLPanel.class).get("embeddedMime", "text/html");
Language<?> embeddedLanguage = MimeLookup.getLookup(embeddedMime).lookup(Language.class);
if (embeddedLanguage != null && languagePath.mimePath().equals("text/x-ftl")) {
if (token.id().name().startsWith("STATIC_TEXT")) {
return LanguageEmbedding.create(embeddedLanguage, 0, 0, true);
}
}
return null;
}
}