public Language<CppTokenId> language() { return ts.language(); }
public Language<FortranTokenId> language() { return ts.language(); }
private Highlights (TokenSequence tokenSequence, int startOffset, int endOffset) { this.tokenSequence = tokenSequence; this.mimeType = tokenSequence.language().mimeType(); this.endOffset = endOffset; startOffset1 = startOffset; endOffset1 = startOffset; }
public String getMimeType () { return ts.language ().mimeType (); }
private static String getMimeTypeAtOffset(Document doc, int offset) { TokenHierarchy th = TokenHierarchy.get(doc); List<TokenSequence<?>> tsl = th.embeddedTokenSequences(offset, false); if (tsl != null && tsl.size() > 0) { TokenSequence<?> tokenSequence = tsl.get(tsl.size() - 1); return tokenSequence.language().mimeType(); } return null; } }
private boolean testCreateAnnotation(TokenHierarchy hi, TokenSequence ts, ASTItem item, LanguagesAnnotation la) throws BadLocationException { if (ts.language () == null) throw new NullPointerException ("ts.language()==null"); if (ts.language ().mimeType () == null) throw new NullPointerException ("TokenSequence.mimeType==null"); if (ts.language().mimeType().equals(item.getMimeType())) { Token t = ts.token(); if (t == null) throw new NullPointerException (); Position position = doc.createPosition(t.offset(hi)); la.setPosition (position); doc.addAnnotation(position, t.length(), la); return true; } else { ts = ts.embedded(); if(ts == null) { return false; } else { return ts.moveNext() ? testCreateAnnotation(hi, ts, item, la) : false; } } }
@Override public void run() { if (TokenList.this.cancel.get()) { return ; } topLevel = TokenHierarchy.get(doc).tokenSequence(); topLevelIsJava = topLevel.language() == JavaTokenId.language(); if (topLevelIsJava) { ts = topLevel; ts.moveStart(); ts.moveNext(); //XXX: what about empty document } } });
public static TokenSequence<PHPTokenId> getPHPTokenSequence(TokenHierarchy<?> th, int offset) { TokenSequence<PHPTokenId> ts = th == null ? null : th.tokenSequence(PHPTokenId.language()); if (ts == null) { // Possibly an embedding scenario such as an RHTML file // First try with backward bias true List<TokenSequence<?>> list = th.embeddedTokenSequences(offset, true); for (TokenSequence t : list) { if (t.language() == PHPTokenId.language()) { ts = t; break; } } if (ts == null) { list = th.embeddedTokenSequences(offset, false); for (TokenSequence t : list) { if (t.language() == PHPTokenId.language()) { ts = t; break; } } } } return ts; }
private EditorTokenInput ( Set<Integer> filter, StyledDocument doc ) { tokenSequence = TokenHierarchy.get (doc).tokenSequence (); mimeType = tokenSequence.language ().mimeType (); try { language = LanguagesManager.get ().getLanguage (mimeType); } catch (LanguageDefinitionNotFoundException ex) { } this.filter = filter; this.doc = doc; }
private String getRealMimeType(TokenSequence ts, int offset) { while (true) { ts.move(offset); if (!ts.moveNext()) break; offset = ts.offset(); TokenSequence ts2 = ts.embedded(); if (ts2 == null) break; ts = ts2; } return ts.language().mimeType(); }
private String getRealMimeType(TokenSequence ts, int offset) { while (true) { ts.move(offset); if (!ts.moveNext()) break; offset = ts.offset(); TokenSequence ts2 = ts.embedded(); if (ts2 == null) break; ts = ts2; } return ts.language().mimeType(); }
private String getRealMimeType(TokenSequence ts, int offset) { while (true) { ts.move(offset); if (!ts.moveNext()) break; offset = ts.offset(); TokenSequence ts2 = ts.embedded(); if (ts2 == null) break; ts = ts2; } return ts.language().mimeType(); }
private void addLanguages(List<Language> result, TokenSequence ts, int offset) { ts.move(offset); if (ts.moveNext() || ts.movePrevious()) { TokenSequence ets = ts.embedded(); if (ets != null) { addLanguages(result, ets, offset); // Recurse } String mimeType = ts.language().mimeType(); Language language = getLanguageByMimeType(mimeType); if (language != null) { result.add(language); } } }
@SuppressWarnings("unchecked") private static TokenSequence<? extends RubyTokenId> findRhtmlDelimited(TokenSequence t, int offset) { String mimeType = t.language().mimeType(); if (mimeType.equals(RubyInstallation.RHTML_MIME_TYPE) || mimeType.equals(RubyInstallation.YAML_MIME_TYPE)) { t.move(offset); if (t.moveNext() && t.token() != null && "ruby-delimiter".equals(t.token().id().primaryCategory())) { // NOI18N // It's a delimiter - move ahead and see if we find it if (t.moveNext() && t.token() != null && "ruby".equals(t.token().id().primaryCategory())) { // NOI18N TokenSequence<?> ets = t.embedded(); if (ets != null) { return (TokenSequence<? extends RubyTokenId>)ets; } } } } return null; }
@SuppressWarnings("unchecked") private static TokenSequence<GroovyTokenId> findRhtmlDelimited(TokenSequence t, int offset) { if (t.language().mimeType().equals("text/x-gsp")) { t.move(offset); if (t.moveNext() && t.token() != null && "groovy-delimiter".equals(t.token().id().primaryCategory())) { // NOI18N // It's a delimiter - move ahead and see if we find it if (t.moveNext() && t.token() != null && "groovy".equals(t.token().id().primaryCategory())) { // NOI18N TokenSequence<?> ets = t.embedded(); if (ets != null) { return (TokenSequence<GroovyTokenId>) ets; } } } } return null; }
private static TokenSequence<FortranTokenId> getFortranTokenSequence(final TokenHierarchy<?> hierarchy, final int offset) { if (hierarchy != null) { TokenSequence<?> ts = hierarchy.tokenSequence(); while (ts != null && (offset == 0 || ts.moveNext())) { ts.move(offset); if (ts.language() == FortranTokenId.languageFortran()) { @SuppressWarnings("unchecked") TokenSequence<FortranTokenId> innerTS = (TokenSequence<FortranTokenId>) ts; return innerTS; } if (!ts.moveNext() && !ts.movePrevious()) { return null; } ts = ts.embedded(); } } return null; }
/** * @since 0.21 */ public static TokenSequence<JavaTokenId> getJavaTokenSequence(final TokenHierarchy hierarchy, final int offset) { if (hierarchy != null) { TokenSequence<?> ts = hierarchy.tokenSequence(); while(ts != null && (offset == 0 || ts.moveNext())) { ts.move(offset); if (ts.language() == JavaTokenId.language()) { return (TokenSequence<JavaTokenId>)ts; } if (!ts.moveNext() && !ts.movePrevious()) { return null; } ts = ts.embedded(); } } return null; }
/** * method should be called under document read lock and token processor must be * very fast to prevent document blocking. If startOffset is less than lastOffset, * then process tokens in backward direction, otherwise in forward * @param tp * @param doc * @param startOffset * @param lastOffset */ public static void processTokens(CndTokenProcessor<Token<TokenId>> tp, Document doc, int startOffset, int lastOffset) { TokenSequence<TokenId> cppTokenSequence = CndLexerUtilities.getCppTokenSequence(doc, startOffset, false, lastOffset < startOffset); if (cppTokenSequence == null) { // check if it is C/C++ document at all TokenHierarchy<Document> hi = TokenHierarchy.get(doc); TokenSequence<?> ts = hi.tokenSequence(); if (ts != null) { if (CndLexerUtilities.isCppLanguage(ts.language(), true)) { tp.start(startOffset, startOffset, lastOffset); // just emulate finish tp.end(lastOffset, lastOffset); return; } } return; } processTokens(tp, cppTokenSequence, startOffset, lastOffset); }
private void mark (TokenSequence ts) { ts.move (startOffset1); if (!ts.moveNext ()) return; Token token = ts.token (); TokenSequence ts2 = ts.embedded (); if (ts2 == null) return; String mimeTypeOut = ts.language ().mimeType (); String mimeTypeIn = ts2.language ().mimeType (); if (token.id ().name ().equals (SLexer.EMBEDDING_TOKEN_TYPE_NAME)) { Color c = getPreprocessorImportsColor (mimeTypeIn); if (c != null) { attributeSet.addAttribute (StyleConstants.Background, c); attributeSet.addAttribute (HighlightsContainer.ATTR_EXTENDS_EOL, Boolean.TRUE); endOffset1 = tokenSequence.offset () + token.length (); } } else if (!mimeTypeOut.equals (mimeTypeIn)) { Color c = getTokenImportsColor (mimeTypeOut, mimeTypeIn, token.id ().name ()); if (c != null) { attributeSet.addAttribute (StyleConstants.Background, c); attributeSet.addAttribute (HighlightsContainer.ATTR_EXTENDS_EOL, Boolean.TRUE); endOffset1 = tokenSequence.offset () + token.length (); } } mark (ts2); }
@SuppressWarnings("unchecked") private void reformatImpl(TokenHierarchy<?> hierarchy, int startOffset, int endOffset) throws BadLocationException { TokenSequence<?> ts = hierarchy.tokenSequence(); ts.move(startOffset); if (ts.moveNext() && ts.token().id() != CppTokenId.NEW_LINE){ while (ts.movePrevious()){ startOffset = ts.offset(); if (ts.token().id() != CppTokenId.NEW_LINE) { break; } } } while (ts != null && (startOffset == 0 || ts.moveNext())) { ts.move(startOffset); if (CndLexerUtilities.isCppLanguage(ts.language(), true)) { reformatImpl((TokenSequence<CppTokenId>) ts, startOffset, endOffset); return; } if (!ts.moveNext() && !ts.movePrevious()) { return; } ts = ts.embedded(); } }