package com.acme; import java.util.logging.Logger; import javax.swing.text.BadLocationException; import org.netbeans.api.editor.mimelookup.MimeRegistration; import org.netbeans.api.java.lexer.JavaTokenId; 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.api.lexer.TokenUtilities; import org.netbeans.modules.editor.indent.spi.Context; import org.netbeans.modules.editor.indent.spi.ExtraLock; import org.netbeans.modules.editor.indent.spi.IndentTask; import org.netbeans.modules.editor.indent.spi.ReformatTask; import org.netbeans.spi.lexer.LanguageEmbedding; import org.netbeans.spi.lexer.LanguageProvider; import org.openide.util.lookup.ServiceProvider; @ServiceProvider(service = LanguageProvider.class) public class EmbeddedTest extends LanguageProvider { @Override public Language findLanguage(String mimeType) { return null; } @Override public LanguageEmbedding findLanguageEmbedding(Token token, LanguagePath languagePath, InputAttributes inputAttributes) { if(token == null){ return null; } if(token.text() == null) { return null; } Logger.getLogger("EmbeddedTest").info("token: " + token.text()); if (token.id() == JavaTokenId.BLOCK_COMMENT && TokenUtilities.startsWith(token.text(), "/*xxx") && TokenUtilities.endsWith(token.text(), "*/")) { Logger.getLogger("EmbeddedTest").info("returning embedded language."); return LanguageEmbedding.create(JavaTokenId.language(), 5, 2); } return null; } @MimeRegistration(mimeType = "text/x-java/text/x-java", service = IndentTask.Factory.class) public static class IndentTest implements IndentTask.Factory { @Override public IndentTask createTask(Context context) { Logger.getLogger("EmbeddedTest").info("returning neutral indent task."); return new IndentTask() { @Override public void reindent() throws BadLocationException { } @Override public ExtraLock indentLock() { return null; } }; } } @MimeRegistration(mimeType = "text/x-java/text/x-java", service = ReformatTask.Factory.class) public static class ReformatTest implements ReformatTask.Factory { @Override public ReformatTask createTask(Context context) { Logger.getLogger("EmbeddedTest").info("returning neutral reformat task."); return new ReformatTask() { @Override public void reformat() throws BadLocationException { } @Override public ExtraLock reformatLock() { return null; } }; } } }