private synchronized Formatter getFormatter() { if (formatter == null) { // XXX: Carefull here, generally context.mimePath() != mimeType. This // task's factory was created for a top level language (mimeType), but the task // itself can be used for an embedded language. // If the task is used for the document itself (not an embedded // section) Context.mimePath() == mimeType. // However, if it is used for an embedded section the Context.mimePath() gives // the mime path (languege path) of that section. Which is generally // something like 'application/x-httpd-eruby/text/x-ruby'. While the // task was registered for 'text/x-ruby'. // Therefore with the __current__ implementation of MimeLookupInitializerImpl // we can simply take the last component of Context.mimePath(). MimePath mimePath = MimePath.parse(context.mimePath()); String mimeType = mimePath.size() > 1 ? mimePath.getMimeType(mimePath.size() - 1) : mimePath.getPath(); Language language = LanguageRegistry.getInstance().getLanguageByMimeType(mimeType); formatter = language.getFormatter(); } return formatter; }
private synchronized Formatter getFormatter() { if(formatter == null) { // XXX: Carefull here, generally context.mimePath() != mimeType. This // task's factory was created for a top level language (mimeType), but the task // itself can be used for an embedded language. // If the task is used for the document itself (not an embedded // section) Context.mimePath() == mimeType. // However, if it is used for an embedded section the Context.mimePath() gives // the mime path (languege path) of that section. Which is generally // something like 'application/x-httpd-eruby/text/x-ruby'. While the // task was registered for 'text/x-ruby'. // Therefore with the __current__ implementation of MimeLookupInitializerImpl // we can simply take the last component of Context.mimePath(). MimePath mimePath = MimePath.parse(context.mimePath()); String mimeType = mimePath.size() > 1 ? mimePath.getMimeType(mimePath.size() - 1) : mimePath.getPath(); Language language = LanguageRegistry.getInstance().getLanguageByMimeType(mimeType); formatter = language.getFormatter(); } return formatter; } }
try { MimePath mimePath = MimePath.parse (context.mimePath ()); String mimeType = mimePath.getMimeType (mimePath.size () - 1); Language l = LanguagesManager.getDefault ().getLanguage (mimeType); Object indentValue = getIndentProperties (l); LanguagePath languagePath = LanguagePath.get (org.netbeans.api.lexer.Language.find (mimePath.getMimeType (0))); for (int i = 1; i < mimePath.size(); i++) languagePath = languagePath.embedded (org.netbeans.api.lexer.Language.find (mimePath.getMimeType (i))); List<TokenSequence> tokenSequences = tokenHierarchy.tokenSequenceList (languagePath, context.startOffset (), context.endOffset ());