private static void checkConsistency(Document doc) { // Check whether all syntax state infos (except for the first line) are non-null LineRootElement lineRoot = getLineRoot(doc); int lineCount = lineRoot.getElementCount(); for (int i = 1; i < lineCount; i++) { // skip the very first line LineElement elem = (LineElement)lineRoot.getElement(i); assert (elem.getSyntaxStateInfo() != null) : "Syntax state null at line " + i + " of " + lineCount; // NOI18N } }
public Element getParagraphElement(int pos) { return getLineRootElement().getElement( getLineRootElement().getElementIndex(pos)); }
LineRootElement lineRoot = getLineRoot(doc); int lineIndex = lineRoot.getElementIndex(offset); Element lineElem = lineRoot.getElement(lineIndex); int lineStartOffset = lineElem.getStartOffset(); Syntax.StateInfo stateInfo = getValidSyntaxStateInfo(doc, lineIndex); lineElem = lineRoot.getElement(lineIndex); stateInfo = getValidSyntaxStateInfo(doc, lineIndex); lineStartOffset = lineElem.getStartOffset();
LineRootElement(BaseDocument doc) { this.doc = doc; assert (doc.getLength() == 0) : "Cannot start with non-empty document"; // NOI18N Position startPos = doc.getStartPosition(); assert (startPos.getOffset() == 0) : "Document.getStartPosition() != 0"; // NOI18N Position endPos = doc.getEndPosition(); assert (endPos.getOffset() == 1) : "Document.getEndPosition() != 1"; // NOI18N Element line = new LineElement(this, startPos, endPos); replace(0, 0, new Element[]{ line }); assert (getElement(0) != null); }
LineElement lineElem = (LineElement)lineRoot.getElement(lineIndex); try { LineElement nextLineElem = (LineElement)lineRoot.getElement(lineIndex); // should be valid int nextLineStartOffset = nextLineElem.getStartOffset(); lineStartOffset = nextLineStartOffset; nextLineElem = (LineElement)lineRoot.getElement(lineIndex); nextLineStartOffset = nextLineElem.getStartOffset();
static void invalidateAllSyntaxStateInfos(BaseDocument doc) { LineRootElement lineRoot = getLineRoot(doc); int elemCount = lineRoot.getElementCount(); for (int i = elemCount - 1; i >= 0; i--) { LineElement line = (LineElement)lineRoot.getElement(i); line.clearSyntaxStateInfo(); } }
LineElement removeLine = (LineElement)getElement(index); addLine = false; // do not add new line in this case } else { LineElement nextRemoveLine = (LineElement)getElement(index + 1); removeElements = new Element[] { removeLine,
LineElement lineElem = (LineElement)lineRoot.getElement(lineIndex); Syntax.StateInfo stateInfo = lineElem.getSyntaxStateInfo(); LineElement validLineElem = null; while (validLineIndex > 0) { validLineElem = (LineElement)lineRoot.getElement(validLineIndex); stateInfo = validLineElem.getSyntaxStateInfo() ; if (stateInfo != null) { do { validLineIndex++; validLineElem = (LineElement)lineRoot.getElement(validLineIndex); int scanLength = validLineOffset; // get orig value validLineOffset = validLineElem.getStartOffset();
public static String lineInfosToString(Document doc) { StringBuffer sb = new StringBuffer(); LineRootElement lineRoot = getLineRoot(doc); int lineCount = lineRoot.getElementCount(); for (int i = 0; i < lineCount; i++) { LineElement elem = (LineElement)lineRoot.getElement(i); sb.append("[" + i + "]: lineStartOffset=" + elem.getStartOffset() // NOI18N + ", info: " + elem.getSyntaxStateInfo() + "\n"); // NOI18N } return sb.toString(); }
Element reqPosLineElem = lineRoot.getElement(reqPosLineIndex); Syntax.StateInfo stateInfo = getValidSyntaxStateInfo(doc, reqPosLineIndex); int lineStartOffset = reqPosLineElem.getStartOffset();
private void checkConsistency() { int lineCount = getElementCount(); assert (lineCount > 0); // Should be 1 or greater int prevLineEndOffset = 0; for (int i = 0; i < lineCount; i++) { LineElement elem = (LineElement)getElement(i); assert (prevLineEndOffset == elem.getStartOffset()); assert (prevLineEndOffset < elem.getEndOffset()) : "Line " + i + " of " + lineCount + ": " + lineToString(elem); // NOI18N prevLineEndOffset = elem.getEndOffset(); } assert (prevLineEndOffset == (doc.getLength() + 1)); }