static public String toString(ITextRegion region) { String className = region.getClass().getName(); String shortClassName = className.substring(className.lastIndexOf(".") + 1); //$NON-NLS-1$ String result = shortClassName + "--> " + region.getType() + ": " + region.getStart() + "-" + region.getTextEnd() + (region.getTextEnd() != region.getEnd() ? ("/" + region.getEnd()) : ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ // NOTE: if the document held by any region has been updated and the // region offsets have not // yet been updated, the output from this method invalid. return result; }
public void equatePositions(ITextRegion region) { fStart = region.getStart(); fLength = region.getLength(); fTextLength = region.getTextLength(); }
public void adjustWhitespace(String yylex, int start, int yylengthLength, int yylength, Object lexerState) { assert (twigTokens.size() == 0 || getLastToken().getEnd() == start) && tokensIterator == null; // if state was change - we add a new token and add state if (lexerStateChanges.size() != 0 && getLastChange().state.equals(lexerState)) { final ITextRegion last = twigTokens.getLast(); last.adjustLength(yylength); } }
ITextRegion[] twigTokens; try { twigTokens = scriptRegion.getTwigTokens(0, textRegion.getLength()); for (int j = twigTokens.length - 1; j >= 0; j--) { ITextRegion phpToken = twigTokens[j]; int start = startOffset + phpToken.getStart(); int end = start + phpToken.getLength(); if (/* endFormat >= end || */startFormat <= start && endFormat >= end) { if (phpToken.getType().equals(TwigRegionTypes.PHP_CURLY_OPEN)) { if (j < twigTokens.length - 1 && j > 0) { if (twigTokens[j - 1].getType().equals(TwigRegionTypes.TWIG_DELIMITER) && document.getLineOfOffset(startOffset + phpToken.getStart()) == document .getLineOfOffset(startOffset + twigTokens[j + 1].getStart())) { document.replace(startOffset + phpToken.getEnd(), 0, newline); endLineIndex++; } else if (phpToken.getType().equals(TwigRegionTypes.PHP_CURLY_CLOSE)) { if (j > 0 && (twigTokens[j - 1].getType().equals(TwigRegionTypes.PHP_SEMICOLON) || twigTokens[j - 1].getType().equals(TwigRegionTypes.PHP_CURLY_CLOSE) || twigTokens[j - 1].getType().equals(TwigRegionTypes.TWIG_COMMENT_CLOSE))) { if (document.getLineOfOffset(startOffset + phpToken.getStart()) == document .getLineOfOffset(startOffset + twigTokens[j - 1].getStart())) { document.replace(startOffset + twigTokens[j - 1].getEnd(), 0, newline); endLineIndex++;
static private boolean isValidRegion(ITextRegion rgn) { String type = rgn.getType(); if (type == null) return false; // no type is invalid. if (type == DOMRegionContext.XML_END_TAG_OPEN || type == DOMRegionContext.XML_TAG_NAME || type == DOMRegionContext.XML_TAG_CLOSE) { return true; } return false; }
/** * * @param jspReferenceRegion * @return */ private boolean isUsebeanTag(ITextRegionCollection jspReferenceRegion) { ITextRegionList regions = jspReferenceRegion.getRegions(); ITextRegion r = null; boolean isUseBean = false; for (int i = 0; i < regions.size(); i++) { r = regions.get(i); // https://bugs.eclipse.org/bugs/show_bug.cgi?id=128490 // length of 11 is the length of jsp:useBean // and saves the expensive getText.equals call if (r.getType() == DOMRegionContext.XML_TAG_NAME) { if (r.getTextLength() == 11 && jspReferenceRegion.getText(r).equals("jsp:useBean")) { //$NON-NLS-1$ isUseBean = true; } // break no matter what if you hit tagname break; } } return isUseBean; }
protected ContentAssistRequest computeEqualsProposals(int documentPosition, String matchString, ITextRegion completionRegion, IDOMNode nodeAtOffset, IDOMNode node) { ContentAssistRequest contentAssistRequest = null; IStructuredDocumentRegion sdRegion = getStructuredDocumentRegion(documentPosition); ITextRegion valueRegion = node.getStartStructuredDocumentRegion().getRegionAtCharacterOffset(sdRegion.getStartOffset(completionRegion) + completionRegion.getLength()); if ((valueRegion != null) && (valueRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) && (sdRegion.getStartOffset(valueRegion) <= documentPosition)) { // replace the adjacent attribute value contentAssistRequest = newContentAssistRequest(nodeAtOffset, node, sdRegion, valueRegion, sdRegion.getStartOffset(valueRegion), valueRegion.getTextLength(), matchString); } else { // append an attribute value after the '=' contentAssistRequest = newContentAssistRequest(nodeAtOffset, node, sdRegion, completionRegion, documentPosition, 0, matchString); } addAttributeValueProposals(contentAssistRequest); return contentAssistRequest; }
protected void processElementAttrEqualsDoubleClicked2Times() { int prevRegionOffset = fStructuredDocumentRegion.getStartOffset(fTextRegion) - 1; ITextRegion prevRegion = fStructuredDocumentRegion.getRegionAtCharacterOffset(prevRegionOffset); int nextRegionOffset = fStructuredDocumentRegion.getEndOffset(fTextRegion); ITextRegion nextRegion = fStructuredDocumentRegion.getRegionAtCharacterOffset(nextRegionOffset); if ((prevRegion != null) && (prevRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) && (nextRegion != null) && (nextRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE)) { fStructuredTextViewer.setSelectedRange(fStructuredDocumentRegion.getStartOffset(prevRegion), nextRegion.getTextEnd() - prevRegion.getStart()); } }
if (token == null) return; String tokenType = token.getType(); ITextRegionContainer container = (ITextRegionContainer) scriptRegion; scriptRegion = container.getRegionAtCharacterOffset(offset); regionStart += scriptRegion.getStart(); && document.getChar(regionStart + token.getStart()) == '.') { token = ((ITwigScriptRegion) scriptRegion).getTwigToken(token.getStart() - 1); if (token != null && token.getType() == TwigRegionTypes.PHP_CONSTANT_ENCAPSED_STRING) { boolean isToken = true; int currentOffset = regionStart + token.getStart() - 1; while (currentOffset >= lineInfo.getOffset()) { token = ((ITwigScriptRegion) scriptRegion).getTwigToken(token.getStart() - 1); tokenType = token.getType(); if (isToken && (tokenType == TwigRegionTypes.TWIG_DELIMITER && document.getChar(regionStart + token.getStart()) == '.') || !isToken && tokenType == TwigRegionTypes.PHP_CONSTANT_ENCAPSED_STRING) { currentOffset = regionStart + token.getStart() - 1; } else { break; for (int i = 0; i < regionStart + token.getEnd() - lineInfo.getOffset(); i++) result.append(' ');
protected void processElementDoubleClicked() { if (fTextRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) { processElementAttrValueDoubleClicked(); // special handling for } else { if (fDoubleClickCount == 1) { fStructuredTextViewer.setSelectedRange(fStructuredDocumentRegion.getStart() + fTextRegion.getStart(), fTextRegion.getTextLength()); } else if (fDoubleClickCount == 2) { if (fTextRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) { processElementAttrNameDoubleClicked2Times(); } else if (fTextRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_EQUALS) { processElementAttrEqualsDoubleClicked2Times(); } else { fStructuredTextViewer.setSelectedRange(fStructuredDocumentRegion.getStart(), fStructuredDocumentRegion.getLength()); fDoubleClickCount = 0; } } else { // fDoubleClickCount == 3 fStructuredTextViewer.setSelectedRange(fStructuredDocumentRegion.getStart(), fStructuredDocumentRegion.getLength()); fDoubleClickCount = 0; } } }
for (int i = 0; i < regions.size(); i++) { region = regions.get(i); String type = region.getType(); if (type == startType) { startOffset = region.getEnd(); } else if (type == endType && prevRegion != null) { endOffset = prevRegion.getTextEnd();
/** */ private void compressTailingSpaces(IStructuredDocumentRegion flatNode, ITextRegion region) { int offset = region.getTextEnd(); int count = region.getEnd() - offset; if (count == 1) { String source = flatNode.getFullText(region); int start = region.getStart(); if (source != null && source.charAt(offset - start) == ' ') { // nothing to do return; } } replaceSource(flatNode, offset, count, " ");//$NON-NLS-1$ }
public String getText(org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion aRegion) { // Must be proxied here since aRegion should always be a child of // *this* container and indexed from // this container's offset return parent.getText().substring(start + aRegion.getStart(), start + aRegion.getTextEnd()); }
bufferedTextRegion.adjustStart(-containerStart); } else { newToken = fRegionFactory.createToken(internalContext, yychar - containerStart, yylength(), yylength()); fEmbeddedContainer.setLength(fEmbeddedContainer.getLength() + newToken.getLength() ); fEmbeddedContainer.setTextLength(fEmbeddedContainer.getTextLength() + newToken.getLength()); } else { ITextRegionList embeddedRegions = fEmbeddedContainer.getRegions(); if (embeddedRegions.size() > 2 && (embeddedRegions.get(embeddedRegions.size()-1)).getType() == XML_TAG_CLOSE && (embeddedRegions.get(embeddedRegions.size() - 3)).getType() == XML_TAG_OPEN && internalTagName != null) { if (containsTagName(internalTagName)) { longscan = true; bufferedTextRegion.adjustStart(-containerStart); } else { newToken = fRegionFactory.createToken(internalContext, yychar - containerStart, yylength(), yylength()); fEmbeddedContainer.setLength(fEmbeddedContainer.getLength() + newToken.getLength()); fEmbeddedContainer.setTextLength(fEmbeddedContainer.getTextLength() + newToken.getLength()); notFinished = notFinished && ((!isEndingType) && !isEOF() && (endTagName != null || internalContext != UNDEFINED) && !(internalContext == PROXY_CONTEXT && (embeddedList.get(embeddedList.size()-1)).getType() == UNDEFINED));
/** * Returns next word after the cursor position * * @throws BadLocationException */ public String getNextWord() throws BadLocationException { ITextRegion nextTwigToken = getNextTwigToken(); return document.get(regionCollection.getStartOffset() + twigScriptRegion.getStart() + nextTwigToken.getStart(), nextTwigToken.getTextLength()); }
if ((region.getStart() >= region.getTextEnd()) || (Math.abs(lengthToReplace) >= region.getTextEnd() - region.getStart())) { canHandle = false; } else { region.adjustLength(lengthDifference); if (!RegionUpdateRule.canHandleAsWhiteSpace(region, parent, changes, region.getStart(), lengthToReplace)) {
/** * Returns next PHP token after offset * * @return PHP token * @throws BadLocationException */ public ITextRegion getNextTwigToken() throws BadLocationException { ITextRegion twigToken = getTwigToken(); do { twigToken = twigScriptRegion.getTwigToken(twigToken.getEnd()); if (!PHPPartitionTypes.isPHPCommentState(twigToken.getType()) && twigToken.getType() != PHPRegionTypes.WHITESPACE) { break; } } while (twigToken.getEnd() < twigScriptRegion.getLength()); return twigToken; }