@Nullable private Token concatTokensUntil(Token start, String endText) { StringBuilder sb = new StringBuilder(); Token current = start; while (current != null && current.getType() != TokenTypes.NULL) { String text = current.getLexeme(); if (text != null) { sb.append(text); if (text.equals(endText)) { char[] line = sb.toString().toCharArray(); TokenImpl token = new TokenImpl(line, 0, line.length - 1, start.getOffset(), start.getType(), start.getLanguageIndex()); token.setNextToken(current.getNextToken()); return token; } } current = current.getNextToken(); } return null; } }
/** * Overridden to handle newlines in JS and CSS differently than those in * markup. */ @Override public boolean getShouldIndentNextLineAfter(Token token) { int languageIndex = token==null ? 0 : token.getLanguageIndex(); if (getCurlyBracesDenoteCodeBlocks(languageIndex)) { if (token!=null && token.length()==1) { char ch = token.charAt(0); return ch=='{' || ch=='('; } } return false; }
/** * Overridden to handle newlines in JS and CSS differently than those in * markup. */ @Override public boolean getShouldIndentNextLineAfter(Token token) { int languageIndex = token==null ? 0 : token.getLanguageIndex(); if (getCurlyBracesDenoteCodeBlocks(languageIndex)) { if (token!=null && token.length()==1) { char ch = token.charAt(0); return ch=='{' || ch=='('; } } return false; }
/** * Overridden to handle newlines in JS and CSS differently than those in * markup. */ @Override public boolean getShouldIndentNextLineAfter(Token token) { int languageIndex = token==null ? 0 : token.getLanguageIndex(); if (getCurlyBracesDenoteCodeBlocks(languageIndex)) { if (token!=null && token.length()==1) { char ch = token.charAt(0); return ch=='{' || ch=='('; } } return false; }
private static int getOpenBraceCount(RSyntaxDocument doc, int languageIndex) { int openCount = 0; for (Token t : doc) { if (t.getType()==Token.SEPARATOR && t.length()==1 && t.getLanguageIndex()==languageIndex) { char ch = t.charAt(0); if (ch=='{') { openCount++; } else if (ch=='}') { openCount--; } } } return openCount; }
/** * Returns the background color for a token. * * @param token The token. * @return The background color to use for that token. If this value is * is <code>null</code> then this token has no special background * color. * @see #getForegroundForToken(Token) */ public Color getBackgroundForToken(Token token) { Color c = null; if (getHighlightSecondaryLanguages()) { // 1-indexed, since 0 == main language. int languageIndex = token.getLanguageIndex() - 1; if (languageIndex>=0 && languageIndex<secondaryLanguageBackgrounds.length) { c = secondaryLanguageBackgrounds[languageIndex]; } } if (c==null) { c = syntaxScheme.getStyle(token.getType()).background; } // Don't default to this.getBackground(), as Tokens simply don't // paint a background if they get a null Color. return c; }
@Override public boolean equals(Object obj) { if (obj==this) { return true; } if (!(obj instanceof Token)) { return false; } Token t2 = (Token)obj; return offset==t2.getOffset() && type==t2.getType() && languageIndex==t2.getLanguageIndex() && hyperlink==t2.isHyperlink() && ((getLexeme()==null && t2.getLexeme()==null) || (getLexeme()!=null && getLexeme().equals(t2.getLexeme()))); }
int languageIndex = t.getLanguageIndex(); if (doc.getCurlyBracesDenoteCodeBlocks(languageIndex) && getOpenBraceCount(doc, languageIndex)>0) {
/** * Makes one token point to the same text segment, and have the same value * as another token. * * @param t2 The token from which to copy. */ public void copyFrom(Token t2) { text = t2.getTextArray(); textOffset = t2.getTextOffset(); textCount = t2.length(); setOffset(t2.getOffset()); setType(t2.getType()); hyperlink = t2.isHyperlink(); languageIndex = t2.getLanguageIndex(); nextToken = t2.getNextToken(); }
int languageIndex = t!=null ? t.getLanguageIndex() : 0; String[] startEnd = doc.getLineCommentStartAndEnd(languageIndex);
return input; int languageIndex = token.getLanguageIndex(); if (index<3) { // One of "{[(" goForward = true; token = RSyntaxUtilities.getTokenAtOffset(token, offset); if (token.getType()==Token.SEPARATOR && token.getLanguageIndex()==languageIndex) { numEmbedded++; token = RSyntaxUtilities.getTokenAtOffset(token, offset); if (token.getType()==Token.SEPARATOR && token.getLanguageIndex()==languageIndex) { if (numEmbedded==0) { if (textArea.isCodeFoldingEnabled() && t2 = RSyntaxUtilities.getTokenAtOffset(token, offset); if (t2.getType()==Token.SEPARATOR && token.getLanguageIndex()==languageIndex) { numEmbedded++; t2 = RSyntaxUtilities.getTokenAtOffset(token, offset); if (t2.getType()==Token.SEPARATOR && token.getLanguageIndex()==languageIndex) { if (numEmbedded==0) { input.setLocation(caretPosition, offset);
if (dot>0) { Token t = RSyntaxUtilities.getTokenAtOffset(rsta, dot-1); languageIndex = t==null ? 0 : t.getLanguageIndex();
tempToken.set(drawSeg.array, tokenOffset-start, p-1-start, tokenOffset, token.getType()); tempToken.setLanguageIndex(token.getLanguageIndex()); boolean paintBG = host.getPaintTokenBackgrounds(line, y); painter.paint(tempToken, g, x,y, host, this, 0, paintBG);
/** * Overridden to handle newlines in JS and CSS differently than those in * markup. */ @Override public boolean getShouldIndentNextLineAfter(Token token) { int languageIndex = token==null ? 0 : token.getLanguageIndex(); if (getCurlyBracesDenoteCodeBlocks(languageIndex)) { if (token!=null && token.length()==1) { char ch = token.charAt(0); return ch=='{' || ch=='('; } } return false; }
Token orig = token; token = new TokenImpl(drawSeg, tokenOffset-start, p-1-start, tokenOffset, token.getType(), token.getLanguageIndex()); token.setLanguageIndex(token.getLanguageIndex());
/** * Overridden to handle newlines in JS and CSS differently than those in * markup. */ @Override public boolean getShouldIndentNextLineAfter(Token token) { int languageIndex = token==null ? 0 : token.getLanguageIndex(); if (getCurlyBracesDenoteCodeBlocks(languageIndex)) { if (token!=null && token.length()==1) { char ch = token.charAt(0); return ch=='{' || ch=='('; } } return false; }
/** * Overridden to handle newlines in JS and CSS differently than those in * markup. */ @Override public boolean getShouldIndentNextLineAfter(Token token) { int languageIndex = token==null ? 0 : token.getLanguageIndex(); if (getCurlyBracesDenoteCodeBlocks(languageIndex)) { if (token!=null && token.length()==1) { char ch = token.charAt(0); return ch=='{' || ch=='('; } } return false; }
private static int getOpenBraceCount(RSyntaxDocument doc, int languageIndex) { int openCount = 0; for (Token t : doc) { if (t.getType()==Token.SEPARATOR && t.length()==1 && t.getLanguageIndex()==languageIndex) { char ch = t.charAt(0); if (ch=='{') { openCount++; } else if (ch=='}') { openCount--; } } } return openCount; }
@Override public boolean equals(Object obj) { if (obj==this) { return true; } if (!(obj instanceof Token)) { return false; } Token t2 = (Token)obj; return offset==t2.getOffset() && type==t2.getType() && languageIndex==t2.getLanguageIndex() && hyperlink==t2.isHyperlink() && ((getLexeme()==null && t2.getLexeme()==null) || (getLexeme()!=null && getLexeme().equals(t2.getLexeme()))); }
/** * Makes one token point to the same text segment, and have the same value * as another token. * * @param t2 The token from which to copy. */ public void copyFrom(Token t2) { text = t2.getTextArray(); textOffset = t2.getTextOffset(); textCount = t2.length(); setOffset(t2.getOffset()); setType(t2.getType()); hyperlink = t2.isHyperlink(); languageIndex = t2.getLanguageIndex(); nextToken = t2.getNextToken(); }