Java Code Examples for org.eclipse.jface.text.IDocument#get()

The following examples show how to use org.eclipse.jface.text.IDocument#get() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: SourceCodeTemplateContext.java    From xds-ide with Eclipse Public License 1.0 6 votes vote down vote up
/**
 * Returns the indentation string (tabs and spaces) from the insertion point line.
 * 
 * @return	the indentation string
 */
private String getIndentation() {
	StringBuilder res = new StringBuilder();
	IDocument document= getDocument();
	try {
		IRegion region= document.getLineInformationOfOffset(getStart());
		String lineContent= document.get(region.getOffset(), region.getLength());
		for (int i=0; i<lineContent.length(); ++i) {
		    char ch = lineContent.charAt(i);
		    if (ch == ' ' || ch == '\t') {
		        res.append(ch);
		    } else {
		        break;
		    }
		}
	} catch (BadLocationException e) {
		LogHelper.logError(e);
	}
	return res.toString();
}
 
Example 2
Source File: RichStringPartionIndentationStrategy.java    From xtext-xtend with Eclipse Public License 2.0 6 votes vote down vote up
public String getLineIndentation(final IDocument document, final int offset) throws BadLocationException {
  String _xblockexpression = null;
  {
    int _xifexpression = (int) 0;
    int _length = document.getLength();
    boolean _tripleEquals = (offset == _length);
    if (_tripleEquals) {
      _xifexpression = (offset - 1);
    } else {
      _xifexpression = offset;
    }
    int adjustedOffset = _xifexpression;
    IRegion line = document.getLineInformationOfOffset(adjustedOffset);
    int start = line.getOffset();
    int end = this.findEndOfWhiteSpace(document, start, offset);
    _xblockexpression = document.get(start, (end - start));
  }
  return _xblockexpression;
}
 
Example 3
Source File: FantasticEditStrategyProvider.java    From xtext-eclipse with Eclipse Public License 2.0 6 votes vote down vote up
@Override
public void customizeDocumentCommand(final IDocument document, final DocumentCommand command) {
  try {
    if ((command.text.equals("t") && document.get((command.offset - 4), 4).equals("Xtex"))) {
      this.contents = document.get();
      document.set(this.getText());
      command.text = "";
      int _lastIndexOf = this.getText().lastIndexOf("M");
      int _plus = (_lastIndexOf + 1);
      command.offset = _plus;
    } else {
      if ((this.contents != null)) {
        document.set(this.contents);
        this.contents = null;
      }
    }
  } catch (final Throwable _t) {
    if (_t instanceof BadLocationException) {
    } else {
      throw Exceptions.sneakyThrow(_t);
    }
  }
}
 
Example 4
Source File: JavaDocContext.java    From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 6 votes vote down vote up
@Override
public String getKey() {

	if (getCompletionLength() == 0)
		return super.getKey();

	try {
		IDocument document= getDocument();

		int start= getStart();
		int end= getCompletionOffset();
		return start <= end
			? document.get(start, end - start)
			: ""; //$NON-NLS-1$

	} catch (BadLocationException e) {
		return super.getKey();
	}
}
 
Example 5
Source File: DocumentUtils.java    From http4e with Apache License 2.0 6 votes vote down vote up
public static String nl_to_cursor( IDocument doc, int offset){      
   try {
      for (int n = offset - 1; n >= 0; n--) {
         char c = doc.getChar(n);
         if ( !BaseUtils.isHttp4eIdentifier(c) || c == AssistConstants.EQUAL) {
            String res1 = doc.get(n + 1, offset - n - 1);
            return res1;
         } else if (n == 0) {
            String res2 = doc.get(n, offset);
            return res2;
         }
      }
   } catch (BadLocationException ignore) {
      ExceptionHandler.warn("lastWord: " + ignore);
   }
   return "";
}
 
Example 6
Source File: AbstractDocumentScanner.java    From goclipse with Eclipse Public License 1.0 6 votes vote down vote up
protected AbstractDocumentScanner(IDocument document, String partitioning, String contentType) {
	this.document = assertNotNull(document);
	this.partitioning = partitioning;
	
	this.source = document.get();
	
	if(partitioning == null) {
		this.contentType = IDocument.DEFAULT_CONTENT_TYPE;
		this.documentExt3 = null;
		this.partitioner = null;
	} else {
		Assert.isLegal(partitioning != null);
		Assert.isLegal(contentType != null);
		this.contentType = contentType;
		
		this.documentExt3 = tryCast(document, IDocumentExtension3.class);
		Assert.isLegal(documentExt3 != null, "document must support IDocumentExtension3");
		this.partitioner = documentExt3.getDocumentPartitioner(partitioning);
		Assert.isLegal(partitioner != null, "document must have a partitioner for " + partitioning);
	}
}
 
Example 7
Source File: SnippetTemplateProposal.java    From APICloud-Studio with GNU General Public License v3.0 6 votes vote down vote up
public boolean validate(IDocument document, int offset, DocumentEvent event)
{
	try
	{
		int replaceOffset = getReplaceOffset(document, fTemplate);
		if (offset >= replaceOffset)
		{
			String content = document.get(replaceOffset, offset - replaceOffset);
			return fTemplate.getName().startsWith(content);
		}
	}
	catch (BadLocationException e)
	{
		// concurrent modification - ignore
	}
	return false;
}
 
Example 8
Source File: DocumentUtils.java    From http4e with Apache License 2.0 5 votes vote down vote up
public static String delim_to_cursor( IDocument doc, int offsetDelim, int offset){      
   String valToCursor = "";
   try {
      valToCursor = doc.get(offsetDelim, offset - offsetDelim);
   } catch (BadLocationException ignore) {
      ExceptionHandler.warn("lastWord: " + ignore);
   }
   return valToCursor;
}
 
Example 9
Source File: PositionBasedCompletionProposal.java    From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 5 votes vote down vote up
public boolean validate(IDocument document, int offset, DocumentEvent event) {
	try {
		String content= document.get(fReplacementPosition.getOffset(), offset - fReplacementPosition.getOffset());
		if (fReplacementString.startsWith(content))
			return true;
	} catch (BadLocationException e) {
		// ignore concurrently modified document
	}
	return false;
}
 
Example 10
Source File: TextSelectionUtils.java    From Pydev with Eclipse Public License 1.0 5 votes vote down vote up
/**
 * Gets line from document.
 *
 * @param i Line number
 * @return String line in String form
 */
public static String getLine(IDocument doc, int i) {
    try {
        IRegion lineInformation = doc.getLineInformation(i);
        return doc.get(lineInformation.getOffset(), lineInformation.getLength());
    } catch (Exception e) {
        return "";
    }
}
 
Example 11
Source File: ToIndentHandler.java    From e4macs with Eclipse Public License 1.0 5 votes vote down vote up
/**
 * Look for first non-whitespace character on the line and move to it
 * 
 * @see com.mulgasoft.emacsplus.commands.EmacsPlusNoEditHandler#transform(org.eclipse.ui.texteditor.ITextEditor, org.eclipse.jface.text.IDocument, org.eclipse.jface.text.ITextSelection, org.eclipse.core.commands.ExecutionEvent)
 */
@Override
protected int transform(ITextEditor editor, IDocument document, ITextSelection currentSelection,
		ExecutionEvent event) throws BadLocationException {

	int offset = getCursorOffset(editor,currentSelection);
	IRegion linfo = document.getLineInformationOfOffset(offset);
	int llen = linfo.getLength();
	String line = document.get(linfo.getOffset(), llen);
	int index = 0;
	while (index < llen && Character.isWhitespace(line.charAt(index))) {
		index++;
	}
	int newOffset = linfo.getOffset() + index;
	// don't move if we're at the same offset 
	if (newOffset != offset) { 
		// if past the last character on the line, set to end
		if (index == llen) {
			--index;
		}
		setCursorOffset(editor, newOffset);
		if (isMarkEnabled(editor, currentSelection)) {
			// set new point/mark selection when mark enabled
			int mark = getMark(editor);
			selectAndReveal(editor,newOffset,mark);
			setFlagMark(mark - newOffset == 0);
		}
	}
	return NO_OFFSET;
}
 
Example 12
Source File: InlinedCssFormattingStrategy.java    From gwt-eclipse-plugin with Eclipse Public License 1.0 5 votes vote down vote up
private String indentCssForXml(String formattedCssBlock, IDocument document,
    TypedPosition partition, String cssLineSeparator, String xmlLineSeparator)
    throws BadLocationException {

  String oneXmlIndent = computeOneXmlIndentString();

  int lineNumberInDocument = document.getLineOfOffset(partition.getOffset());
  int offsetOfLineInDocument = document.getLineOffset(lineNumberInDocument);
  String lineContents = document.get(offsetOfLineInDocument,
      document.getLineLength(lineNumberInDocument));
  int offsetOfNonwhitespaceInLine = StringUtilities.findNonwhitespaceCharacter(
      lineContents, 0);

  // The indent string that will be used for the closing tag </ui:style>
  String styleElementIndentString;
  // The indent string that will be used for to precede each line of the CSS
  // block
  String cssBlockIndentString;

  if (offsetOfLineInDocument + offsetOfNonwhitespaceInLine == partition.getOffset()) {
    // The CSS block is alone on this line, use whatever indentation it has
    cssBlockIndentString = lineContents.substring(0,
        offsetOfNonwhitespaceInLine);
    styleElementIndentString = cssBlockIndentString.replace(oneXmlIndent, "");

  } else {
    // Something else is before the CSS block on this line (likely the style
    // tag)
    styleElementIndentString = lineContents.substring(0,
        offsetOfNonwhitespaceInLine);
    cssBlockIndentString = styleElementIndentString + oneXmlIndent;
  }

  return processCssBlock(formattedCssBlock, cssLineSeparator,
      xmlLineSeparator, cssBlockIndentString, styleElementIndentString);
}
 
Example 13
Source File: PostfixTemplateProposal.java    From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 5 votes vote down vote up
@Override
public boolean validate(IDocument document, int offset, DocumentEvent event) {
	if (getContext() instanceof JavaStatementPostfixContext) {
		JavaStatementPostfixContext c = (JavaStatementPostfixContext) getContext();
		try {
			int start = c.getStart() + c.getAffectedSourceRegion().getLength() + 1;
			String content = document.get(start, offset - start);
			return this.getTemplate().getName().toLowerCase().startsWith(content.toLowerCase());
		} catch (BadLocationException e) {
			e.printStackTrace();
		}
	}
	return super.validate(document, offset, event);
}
 
Example 14
Source File: JSDocEditStrategy.java    From n4js with Eclipse Public License 1.0 5 votes vote down vote up
/**
 * Expects the cursor to be in the same line as the start terminal puts any text between start terminal and cursor
 * into a separate newline before the cursor. puts any text between cursor and end terminal into a separate newline
 * after the cursor. puts the closing terminal into a separate line at the end. adds a closing terminal if not
 * existent. If the next astElement is a method with parameters or return the JSDoc-tags will be added as an
 * addition.
 */
@Override
protected CommandInfo handleCursorInFirstLine(IDocument document, DocumentCommand command, IRegion startTerminal,
		IRegion stopTerminal) throws BadLocationException {
	CommandInfo newC = new CommandInfo();
	List<String> returnTypeAndParameterNames = getReturnTypeAndParameterNames(document, startTerminal);
	String paramString = "";
	String returnString = "";
	if ((returnTypeAndParameterNames.size() > 0) && returnTypeAndParameterNames.get(0).equals("return")) {
		returnString = INDENTATION_STR + RETURN_STR + command.text;
	}
	if (returnTypeAndParameterNames.size() > 1) {
		for (int i = 1; i < returnTypeAndParameterNames.size(); i += 1) {
			paramString += command.text + INDENTATION_STR + PARAM_STR + returnTypeAndParameterNames.get(i);
		}
	}
	newC.isChange = true;
	newC.offset = command.offset;
	newC.text += command.text + INDENTATION_STR;
	newC.cursorOffset = command.offset + newC.text.length();
	if (stopTerminal == null && atEndOfLineInput(document, command.offset)) {
		newC.text += command.text + getRightTerminal();
	}
	if (stopTerminal != null && stopTerminal.getOffset() >= command.offset
			&& util.isSameLine(document, stopTerminal.getOffset(), command.offset)) {
		String string = document.get(command.offset, stopTerminal.getOffset() - command.offset);
		if (string.trim().length() > 0)
			newC.text += string.trim();
		if (!(returnTypeAndParameterNames.size() == 0)) {
			newC.text += paramString + command.text + returnString;
		} else {
			newC.text += command.text;
		}

		newC.length += string.length();
	}
	return newC;
}
 
Example 15
Source File: JavaElementHyperlinkDetector.java    From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 5 votes vote down vote up
/**
 * Returns whether the word is "inheritDoc".
 * 
 * @param document the document
 * @param wordRegion the word region
 * @return <code>true</code> iff the word is "inheritDoc"
 * @since 3.7
 */
private static boolean isInheritDoc(IDocument document, IRegion wordRegion) {
	try {
		String word= document.get(wordRegion.getOffset(), wordRegion.getLength());
		return "inheritDoc".equals(word); //$NON-NLS-1$
	} catch (BadLocationException e) {
		return false;
	}
}
 
Example 16
Source File: AdapterFactory.java    From tlaplus with MIT License 5 votes vote down vote up
/**
   * Returns the line number (in Java coordinates/zero based) of the line containing the first
   * "--algorithm" or "--fair algorithm" token(s) that begin(s) a PlusCal algorithm. 
   * Returns -1 if there is none.
   * 
   * @param document
   * @return
   */
  public static int GetLineOfPCalAlgorithm(IDocument document) {
try {
	final String moduleAsString = document.get();
	return LocationToLine(document,
			TLAtoPCalMapping.GetLineOfPCalAlgorithm(moduleAsString));
} catch (BadLocationException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}
return -1;
  }
 
Example 17
Source File: PyTodoVisitor.java    From Pydev with Eclipse Public License 1.0 5 votes vote down vote up
/**
 * Checks a partition of a document for todo tags (filling lst with the markers to be created).
 */
private void check(int i, int j, IDocument document, List<MarkerInfo> lst, List<String> todoTags)
        throws BadLocationException {
    String tok = document.get(i, j - i);
    int index;
    HashSet<Integer> lines = new HashSet<Integer>();
    for (String element : todoTags) {

        if (element.length() == 0) {
            continue;
        }
        int start = 0;
        while ((index = tok.indexOf(element, start)) != -1) {

            start = index + element.length();

            int absoluteStart = i + index;
            int line = document.getLineOfOffset(absoluteStart);
            if (lines.contains(line)) {
                //Only 1 TASK per line!
                continue;
            } else {
                lines.add(line);
            }

            String message = tok.substring(index).trim();
            String markerType = IMarker.TASK;
            int severity = IMarker.SEVERITY_WARNING;
            boolean userEditable = false;
            boolean isTransient = false;
            int absoluteEnd = absoluteStart + message.length();
            Map<String, Object> additionalInfo = null;

            MarkerInfo markerInfo = new PyMarkerUtils.MarkerInfo(document, message, markerType, severity,
                    userEditable, isTransient, line, absoluteStart, absoluteEnd, additionalInfo);
            lst.add(markerInfo);
        }
    }
}
 
Example 18
Source File: JavaAutoIndentStrategy.java    From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 4 votes vote down vote up
private void smartIndentAfterOpeningBracket(IDocument d, DocumentCommand c) {
	if (c.offset < 1 || d.getLength() == 0)
		return;

	JavaHeuristicScanner scanner= new JavaHeuristicScanner(d);

	int p= (c.offset == d.getLength() ? c.offset - 1 : c.offset);

	try {
		// current line
		int line= d.getLineOfOffset(p);
		int lineOffset= d.getLineOffset(line);

		// make sure we don't have any leading comments etc.
		if (d.get(lineOffset, p - lineOffset).trim().length() != 0)
			return;

		// line of last Java code
		int pos= scanner.findNonWhitespaceBackward(p, JavaHeuristicScanner.UNBOUND);
		if (pos == -1)
			return;
		int lastLine= d.getLineOfOffset(pos);

		// only shift if the last java line is further up and is a braceless block candidate
		if (lastLine < line) {

			JavaIndenter indenter= new JavaIndenter(d, scanner, fProject);
			StringBuffer indent= indenter.computeIndentation(p, true);
			String toDelete= d.get(lineOffset, c.offset - lineOffset);
			if (indent != null && !indent.toString().equals(toDelete)) {
				c.text= indent.append(c.text).toString();
				c.length += c.offset - lineOffset;
				c.offset= lineOffset;
			}
		}

	} catch (BadLocationException e) {
		JavaPlugin.log(e);
	}

}
 
Example 19
Source File: GssExtractor.java    From gwt-eclipse-plugin with Eclipse Public License 1.0 3 votes vote down vote up
/**
 * Extracts a CSS block from a document and creates the CSS model and
 * documents.
 * <p>
 * This requires a model loader to create the model, instead of taking in an
 * empty model. The reason is, there are multiple ways to create a model, but
 * we need a way that also creates the associated documents. The model loader
 * is guaranteed to do this, which is why we specifically take this as a
 * parameter.
 * 
 * @param cssModelLoader a model loader used to create the empty model (see
 *          {@link com.google.gwt.eclipse.core.uibinder.sse.css.model.CssResourceAwareModelLoader}
 *          )
 * @return a container for the model and associated documents, or null if it
 *         could not be successfully extracted
 */
public static GssExtractor extract(IDocument document, int offset,
    int length, CSSModelLoader cssModelLoader) {
  try {
    String cssBlock = document.get(offset, length);
    return extract(cssBlock, cssModelLoader);
  } catch (BadLocationException e) {
    // Likely not to happen, but in case it does, return null
    return null;
  }
}
 
Example 20
Source File: TypeScriptCompletionProposal.java    From typescript.java with MIT License 3 votes vote down vote up
/**
 * Computes the token at the given <code>offset</code> in <code>document</code>
 * to emphasize the ranges matching this token in proposal's display string.
 * 
 * @param document
 *            the document where content assist is invoked
 * @param offset
 *            the offset in the document at current caret location
 * @return the token at the given <code>offset</code> in <code>document</code>
 *         to be used for emphasizing matching ranges in proposal's display
 *         string
 * @since 3.12
 */
protected String getPatternToEmphasizeMatch(IDocument document, int offset) {
	int start = getPrefixCompletionStart(document, offset);
	int patternLength = offset - start;
	String pattern = null;
	try {
		pattern = document.get(start, patternLength);
	} catch (BadLocationException e) {
		// return null
	}
	return pattern;
}