Java 类org.eclipse.jface.text.Region 实例源码
项目:eclipse-batch-editor
文件:PresentationSupport.java
@Override
public IRegion getDamageRegion(ITypedRegion partition, DocumentEvent event, boolean documentPartitioningChanged) {
if (!documentPartitioningChanged) {
try {
IRegion info = fDocument.getLineInformationOfOffset(event.getOffset());
int start = Math.max(partition.getOffset(), info.getOffset());
int end = event.getOffset() + (event.getText() == null ? event.getLength() : event.getText().length());
if (info.getOffset() <= end && end <= info.getOffset() + info.getLength()) {
// optimize the case of the same line
end = info.getOffset() + info.getLength();
} else{
end = endOfLineOf(end);
}
end = Math.min(partition.getOffset() + partition.getLength(), end);
return new Region(start, end - start);
} catch (BadLocationException x) {
}
}
return partition;
}
项目:eclipse-bash-editor
文件:PresentationSupport.java
@Override
public IRegion getDamageRegion(ITypedRegion partition, DocumentEvent event, boolean documentPartitioningChanged) {
if (!documentPartitioningChanged) {
try {
IRegion info = fDocument.getLineInformationOfOffset(event.getOffset());
int start = Math.max(partition.getOffset(), info.getOffset());
int end = event.getOffset() + (event.getText() == null ? event.getLength() : event.getText().length());
if (info.getOffset() <= end && end <= info.getOffset() + info.getLength()) {
// optimize the case of the same line
end = info.getOffset() + info.getLength();
} else{
end = endOfLineOf(end);
}
end = Math.min(partition.getOffset() + partition.getLength(), end);
return new Region(start, end - start);
} catch (BadLocationException x) {
}
}
return partition;
}
项目:pgcodekeeper
文件:DiffTableViewer.java
private Region getMatchingLocation(String text, String filter, Pattern regExPattern) {
if (filter != null && !filter.isEmpty() && text != null) {
String textLc = text.toLowerCase();
int offset = -1;
int length = 0;
if (regExPattern != null) {
Matcher matcher = regExPattern.matcher(textLc);
if (matcher.find()) {
offset = matcher.start();
length = matcher.end() - offset;
}
} else {
offset = textLc.indexOf(filter);
length = filter.length();
}
if (offset >= 0) {
return new Region(offset, length);
}
}
return null;
}
项目:pgcodekeeper
文件:SQLEditorHyperLinkDetector.java
@Override
public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region,
boolean canShowMultipleHyperlinks) {
SQLEditor editor = getAdapter(SQLEditor.class);
PgDbParser parser = editor.getParser();
int offset = region.getOffset();
List<PgObjLocation> refs = parser.getObjsForEditor(editor.getEditorInput());
for (PgObjLocation obj : refs) {
if (offset > obj.getOffset()
&& offset < (obj.getOffset() + obj.getObjLength())) {
IHyperlink[] links = parser.getDefinitionsForObj(obj)
.map(def -> new SQLEditorHyperLink(
new Region(def.getOffset(), def.getObjLength()),
new Region(obj.getOffset(), obj.getObjLength()),
obj.getObjName(), def.getFilePath(), def.getLineNumber()))
.toArray(IHyperlink[]::new);
if (links.length != 0) {
return links;
}
}
}
return null;
}
项目:pgcodekeeper
文件:SQLEditorTextHover.java
@Override
public IRegion getHoverRegion(ITextViewer textViewer, int offset) {
PgDbParser parser = editor.getParser();
List<PgObjLocation> refs = parser.getObjsForEditor(editor.getEditorInput());
for (PgObjLocation obj : refs) {
if (offset > obj.getOffset()
&& offset < (obj.getOffset() + obj.getObjLength())) {
Optional<PgObjLocation> loc = parser.getDefinitionsForObj(obj).findAny();
if (loc.isPresent()) {
SQLEditorMyRegion region = new SQLEditorMyRegion(obj.getOffset(), obj.getObjLength());
region.setComment(loc.get().getComment());
return region;
}
}
}
return new Region(offset, 0);
}
项目:vertigo-chroma-kspplugin
文件:KspTextHover.java
@Override
public IRegion getHoverRegion(ITextViewer textViewer, int offset) {
IDocument document = textViewer.getDocument();
/* Vérifie qu'on est dans une String de KSP */
boolean isSqlString = DocumentUtils.isContentType(document, offset, KspRegionType.STRING);
if (!isSqlString) {
return null;
}
/* Extrait le mot courant. */
ITextSelection selection = new TextSelection(document, offset, 0);
ITextSelection currentWordSelection = DocumentUtils.findCurrentWord(document, selection, WordSelectionType.SNAKE_CASE);
if (currentWordSelection == null) {
return null;
}
String currentWord = currentWordSelection.getText();
if (currentWord == null) {
return null;
}
/* Renvoie la région du mot. */
return new Region(currentWordSelection.getOffset(), currentWordSelection.getLength());
}
项目:egradle
文件:PresentationSupport.java
@Override
public IRegion getDamageRegion(ITypedRegion partition, DocumentEvent event, boolean documentPartitioningChanged) {
if (!documentPartitioningChanged) {
try {
IRegion info = fDocument.getLineInformationOfOffset(event.getOffset());
int start = Math.max(partition.getOffset(), info.getOffset());
int end = event.getOffset() + (event.getText() == null ? event.getLength() : event.getText().length());
if (info.getOffset() <= end && end <= info.getOffset() + info.getLength()) {
// optimize the case of the same line
end = info.getOffset() + info.getLength();
} else{
end = endOfLineOf(end);
}
end = Math.min(partition.getOffset() + partition.getLength(), end);
return new Region(start, end - start);
} catch (BadLocationException x) {
}
}
return partition;
}
项目:egradle
文件:GradleHyperlinkDetector.java
private IHyperlink[] handleFileLink(IRegion lineInfo, GradleHyperLinkResult result) {
try {
File folder = editorFile.getParentFile();
String fileName = result.linkContent;
File target = new File(folder, fileName);
if (!target.exists()) {
target = new File(fileName);
}
if (!target.exists()) {
return null;
}
IFileStore fileStore = EFS.getLocalFileSystem().getStore(target.toURI());
if (fileStore==null){
return null;
}
IRegion urlRegion = new Region(lineInfo.getOffset() + result.linkOffsetInLine, result.linkLength);
GradleFileHyperlink gradleFileHyperlink = new GradleFileHyperlink(urlRegion, fileStore);
return new IHyperlink[] { gradleFileHyperlink };
} catch (RuntimeException e) {
return null;
}
}
项目:texlipse
文件:LatexParserUtils.java
/**
* Returns the first mandatory argument of the command
*
* @param input
* @param index The index at or after the beginning of the command and before the
* argument
* @return The argument without braces, null if there is no valid argument
* @throws BadLocationException if index is out of bounds
*/
public static IRegion getCommandArgument(String input, int index){
int pos = index;
final int length = input.length();
if (input.charAt(index) == '\\')
pos++;
while (pos < length && Character.isLetter(input.charAt(pos)))
pos++;
while (pos < length && Character.isWhitespace(input.charAt(pos)))
pos++;
if (pos == length) return null;
if (input.charAt(pos) == '{') {
int end = findPeerChar(input, pos + 1, LEFT, '{', '}');
if (end == -1)
return null;
return new Region (pos + 1, end - pos - 1);
}
return null;
}
项目:texlipse
文件:LatexParserUtils.java
private static IRegion findEnvironment(String input, String envName, String command, int fromIndex) {
int pos = input.indexOf("{" + envName + "}", fromIndex + command.length());
while (pos != -1) {
int end = pos + envName.length() + 2;
// Search for the command
int beginStart = findLastCommand(input, command, pos);
if (beginStart != -1 && beginStart >= fromIndex) {
// Check for whitespaces between \begin and {...}
while (pos != beginStart + command.length() && Character.isWhitespace(input.charAt(--pos)))
;
if (pos == beginStart + command.length()) {
return new Region(beginStart, end - beginStart);
}
}
pos = input.indexOf("{" + envName + "}", pos + envName.length() + 2);
}
return null;
}
项目:texlipse
文件:LatexParserUtils.java
private static IRegion findLastEnvironment(String input, String envName, String command, int fromIndex) {
int pos = input.lastIndexOf("{" + envName + "}", fromIndex);
while (pos != -1) {
int end = pos + envName.length() + 2;
// Search for the command
int beginStart = findLastCommand(input, command, pos);
if (beginStart != -1 && beginStart <= fromIndex) {
// Check for whitespaces between \command and {...}
while (pos != beginStart + command.length() && Character.isWhitespace(input.charAt(--pos)))
;
if (pos == beginStart + command.length()) {
return new Region(beginStart, end - beginStart);
}
}
pos = input.lastIndexOf("{" + envName + "}", pos-1);
}
return null;
}
项目:texlipse
文件:TexlipseAnnotationUpdater.java
/**
* Creates and returns a background job which searches and highlights all \label and \*ref.
* @param document
* @param model
* @param refName The name of the reference
* @return The job
*/
private Job createMatchReferenceJob(final IDocument document, final IAnnotationModel model, final String refName) {
return
new Job("Update Annotations") {
public IStatus run(IProgressMonitor monitor) {
String text = document.get();
String refNameRegExp = refName.replaceAll("\\*", "\\\\*");
final String simpleRefRegExp = "\\\\([a-zA-Z]*ref|label)\\s*\\{" + refNameRegExp + "\\}";
Matcher m = (Pattern.compile(simpleRefRegExp)).matcher(text);
while (m.find()) {
if (monitor.isCanceled()) return Status.CANCEL_STATUS;
IRegion match = LatexParserUtils.getCommand(text, m.start());
//Test if it is a real LaTeX command
if (match != null) {
IRegion fi = new Region(m.start(), m.end()-m.start());
createNewAnnotation(fi, "References", model);
}
}
return Status.OK_STATUS;
}
};
}
项目:dsl-devkit
文件:FormatHyperlinkHelper.java
/** {@inheritDoc} */
@Override
public void createHyperlinksByOffset(final XtextResource resource, final int offset, final IHyperlinkAcceptor acceptor) {
final IParseResult parseResult = resource.getParseResult();
if (parseResult == null || parseResult.getRootNode() == null) {
return; // Return, no need to call in super.createAdditionalHyperlinks
}
// Check if the current parse tree node represents an override keyword, in which case we want to link
// to the overridden rule
INode node = NodeModelUtils.findLeafNodeAtOffset(parseResult.getRootNode(), offset);
if (node != null && isOverrideKeyword(node.getGrammarElement())) {
Rule rule = (Rule) eObjectAtOffsetHelper.resolveElementAt(resource, offset);
Region region = new Region(node.getOffset(), node.getLength());
List<Rule> extendedRules = getExtendedRules(rule);
for (Rule extendedRule : extendedRules) {
createHyperlinksTo(resource, region, extendedRule, acceptor);
}
}
super.createHyperlinksByOffset(resource, offset, acceptor);
}
项目:tlaplus
文件:AdapterFactory.java
public static pcal.Region jumptToPCal(TLAtoPCalMapping mapping, Location location, IDocument document) throws BadLocationException {
/*
* Get the best guess of the line number in the
* current contents of the editor that corresponds to what was line
* mapping.tlaStartLine when the algorithm was translated.
* It is computed by assuming that neither the algorithm nor the translation
* have changed, but they both may have been moved down by the same
* number delta of lines (possibly negative). A more sophisticated approach
* using fingerprints of lines could be used, requiring that the necessary
* fingerprint information be put in TLAtoPCalMapping.
*/
int beginAlgorithmLine = AdapterFactory.GetLineOfPCalAlgorithm(document);
if (beginAlgorithmLine == -1) {
throw new BadLocationException("The algorithm is no longer in the module.");
}
// Translate editor location to pcal.Region
final pcal.Region tlaRegion = location.toRegion();
// Do actual mapping
return mapping.mapTLAtoPCalRegion(tlaRegion,
beginAlgorithmLine);
}
项目:tlaplus
文件:TLAEditor.java
public void selectAndReveal(final pcal.Region aRegion) throws BadLocationException {
final IDocument document = getDocumentProvider().getDocument(
getEditorInput());
// Translate pcal.Region coordinates into Java IDocument coordinates
final PCalLocation begin = aRegion.getBegin();
final int startLineOffset = document.getLineOffset(begin.getLine());
final int startOffset = startLineOffset + begin.getColumn();
final PCalLocation end = aRegion.getEnd();
final int endLineOffset = document.getLineOffset(end.getLine());
final int endOffset = endLineOffset + end.getColumn();
final int length = endOffset - startOffset;
selectAndReveal(startOffset, length);
}
项目:tlaplus
文件:TLAEditor.java
public void gotoMarker(final IMarker marker) {
// if the given marker happens to be of instance TLAtoPCalMarker, it
// indicates that the user wants to go to the PCal equivalent of the
// current TLA+ marker
if (marker instanceof TLAtoPCalMarker) {
final TLAtoPCalMarker tlaToPCalMarker = (TLAtoPCalMarker) marker;
try {
final pcal.Region region = tlaToPCalMarker.getRegion();
if (region != null) {
selectAndReveal(region);
return;
} else {
UIHelper.setStatusLineMessage("No valid TLA to PCal mapping found for current selection");
}
} catch (BadLocationException e) {
// not expected to happen
e.printStackTrace();
}
}
// fall back to original marker if the TLAtoPCalMarker didn't work or no
// TLAtoPCalMarker
super.gotoMarker(marker);
}
项目:tlaplus
文件:ToggleCommentAction.java
/**
* Creates a region describing the text block (something that starts at
* the beginning of a line) completely containing the current selection.
*
* @param selection The selection to use
* @param document The document
* @return the region describing the text block comprising the given selection
*/
private IRegion getTextBlockFromSelection(ITextSelection selection, IDocument document)
{
try
{
IRegion line = document.getLineInformationOfOffset(selection.getOffset());
int length = selection.getLength() == 0 ? line.getLength() : selection.getLength()
+ (selection.getOffset() - line.getOffset());
return new Region(line.getOffset(), length);
} catch (BadLocationException x)
{
// should not happen
// TODO
}
return null;
}
项目:tlaplus
文件:DocumentHelper.java
/**
* Returns a new region that ends at the end of the input region and begins
* at the first character of the line before the line containing the offset
* of the input region. If the input region's offset is on the first
* line of the document, this method does nothing.
*
* @param document
* @param region
* @return
* @throws BadLocationException
*/
public static IRegion getRegionWithPreviousLine(IDocument document, IRegion region) throws BadLocationException
{
// the first line of the region
int currentFirstLine = document.getLineOfOffset(region.getOffset());
if (currentFirstLine > 0)
{
int newOffset = document.getLineOffset(currentFirstLine - 1);
return new Region(newOffset, region.getLength() + (region.getOffset() - newOffset));
} else
{
// no previous line so do nothing
return region;
}
}
项目:tlaplus
文件:ModelWriter.java
/**
* Find the IDs in the given text and return the array of
* regions pointing to those or an empty array, if no IDs were found.
* An ID is scheme_timestamp, created by {@link ModelWriter#getValidIdentifier(String)} e.G. next_125195338522638000
* @param text text containing IDs (error text)
* @return array of regions or empty array
*/
public static IRegion[] findIds(String text)
{
if (text == null || text.length() == 0)
{
return new IRegion[0];
}
Matcher matcher = ModelWriter.ID_MATCHER.matcher(text);
Vector<Region> regions = new Vector<Region>();
while (matcher.find())
{
regions.add(new Region(matcher.start(), matcher.end() - matcher.start()));
}
return regions.toArray(new IRegion[regions.size()]);
}
项目:tlaplus
文件:ModelHelper.java
/**
* Finds the locations in the given text and return the array of
* regions pointing to those or an empty array, if no location were found.
* A location is a pointer in the TLA file, e.G. "line 11, col 8 to line 14, col 26 of module Foo"
* @param text text containing locations (error text)
* @return array of regions or empty array
*/
public static IRegion[] findLocations(String text)
{
if (text == null || text.length() == 0)
{
return new IRegion[0];
}
Matcher matcher = Location.LOCATION_MATCHER.matcher(text);
Vector<IRegion> regions = new Vector<IRegion>();
while (matcher.find())
{
regions.add(new Region(matcher.start(), matcher.end() - matcher.start()));
}
// look for this pattern also
// this pattern appears when there
// is an error evaluating a nested expression
matcher = Location.LOCATION_MATCHER4.matcher(text);
while (matcher.find())
{
regions.add(new Region(matcher.start(), matcher.end() - matcher.start()));
}
return regions.toArray(new IRegion[regions.size()]);
}
项目:bts
文件:DocumentUtil.java
/**
* searches backwards for the given string within the same partition type
* @return the region of the match or <code>null</code> if no match were found
* @since 2.4
*/
public IRegion searchBackwardsInSamePartition(String toFind, String documentText, IDocument document, int endOffset) throws BadLocationException {
if (endOffset < 0) {
return null;
}
int length = toFind.length();
String text = preProcessSearchString(documentText);
ITypedRegion partition = document.getPartition(endOffset);
int indexOf = text.lastIndexOf(toFind, endOffset - length);
while (indexOf >= 0) {
ITypedRegion partition2 = document.getPartition(indexOf);
if (partition2.getType().equals(partition.getType())) {
return new Region(indexOf, length);
}
indexOf = text.lastIndexOf(toFind, partition2.getOffset() - length);
}
String trimmed = toFind.trim();
if (trimmed.length() > 0 && trimmed.length() != length) {
return searchBackwardsInSamePartition(trimmed, documentText, document, endOffset);
}
return null;
}
项目:bts
文件:DocumentUtil.java
/**
* searches for the given string within the same partition type
*
* @return the region of the match or <code>null</code> if no match were found
* @since 2.4
*/
public IRegion searchInSamePartition(String toFind, String documentText, IDocument document, int startOffset)
throws BadLocationException {
if (startOffset >= document.getLength()) {
return null;
}
String text = preProcessSearchString(documentText);
ITypedRegion partition = document.getPartition(startOffset);
int indexOf = text.indexOf(toFind, getOffset(toFind, startOffset));
while (indexOf >= 0 && indexOf < document.getLength()) {
ITypedRegion partition2 = document.getPartition(indexOf);
if (partition2.getType().equals(partition.getType())) {
return new Region(indexOf, toFind.length());
}
indexOf = text.indexOf(toFind, partition2.getOffset() + partition2.getLength());
}
String trimmed = toFind.trim();
if (trimmed.length() > 0 && trimmed.length() != toFind.length()) {
return searchInSamePartition(trimmed, documentText, document, startOffset);
}
return null;
}
项目:LogViewer
文件:DamageRepairer.java
public IRegion getDamageRegion(ITypedRegion partition, DocumentEvent event, boolean documentPartitioningChanged) {
if (!documentPartitioningChanged) {
try {
IRegion info= document.getLineInformationOfOffset(event.getOffset());
int start= Math.max(partition.getOffset(), info.getOffset());
int end= event.getOffset() + (event.getText() == null ? event.getLength() : event.getText().length());
if (info.getOffset() <= end && end <= info.getOffset() + info.getLength()) {
// optimize the case of the same line
end= info.getOffset() + info.getLength();
} else
end= endOfLineOf(end);
end= Math.min(partition.getOffset() + partition.getLength(), end);
return new Region(start, end - start);
} catch (BadLocationException x) {
logger.logInfo("unable to find location in document to repair a given region",x); //$NON-NLS-1$
}
}
return partition;
}
项目:APICloud-Studio
文件:CSSElementSelectorHover.java
public IRegion getHoverRegion(ITextViewer textViewer, int offset)
{
IParseNode activeNode = getActiveNode(textViewer, offset);
if (activeNode instanceof CSSSimpleSelectorNode)
{
CSSSimpleSelectorNode node = (CSSSimpleSelectorNode) activeNode;
// Verify that this is an HTML element selector
String typeSelector = node.getTypeSelector();
if (!StringUtil.isEmpty(typeSelector))
{
ElementElement element = new HTMLIndexQueryHelper().getElement(typeSelector.toLowerCase());
if (element != null)
{
return new Region(node.getStartingOffset(), node.getLength());
}
}
}
return null;
}
项目:che
文件:ImportReferencesCollector.java
public static void collect(
ASTNode node,
IJavaProject project,
Region rangeLimit,
boolean skipMethodBodies,
Collection<SimpleName> resultingTypeImports,
Collection<SimpleName> resultingStaticImports) {
ASTNode root = node.getRoot();
CompilationUnit astRoot = root instanceof CompilationUnit ? (CompilationUnit) root : null;
node.accept(
new ImportReferencesCollector(
project,
astRoot,
rangeLimit,
skipMethodBodies,
resultingTypeImports,
resultingStaticImports));
}
项目:che
文件:ImportReferencesCollector.java
private ImportReferencesCollector(
IJavaProject project,
CompilationUnit astRoot,
Region rangeLimit,
boolean skipMethodBodies,
Collection<SimpleName> resultingTypeImports,
Collection<SimpleName> resultingStaticImports) {
super(processJavadocComments(astRoot));
fTypeImports = resultingTypeImports;
fStaticImports = resultingStaticImports;
fSubRange = rangeLimit;
if (project == null || !JavaModelUtil.is50OrHigher(project)) {
fStaticImports = null; // do not collect
}
fASTRoot = astRoot; // can be null
fSkipMethodBodies = skipMethodBodies;
}
项目:APICloud-Studio
文件:Regions.java
/**
* Exclude specified regions
*/
public void remove(IRegion... region) {
for (IRegion r : region) {
Assert.isLegal(r.getLength() >= 0, "Negative region length"); //$NON-NLS-1$
IRegion from = new Region(r.getOffset(), Integer.MAX_VALUE);
IRegion floor = NavigableSetFloor(regions, from);
List<IRegion> list = new ArrayList<IRegion>(NavigableSetTailSet(regions, floor != null ? floor : from, true));
for (IRegion current : list) {
if (overlap(current, r)) {
regions.remove(current);
IRegion[] parts = substruct(current, r);
if (parts.length > 0) {
regions.addAll(Arrays.asList(parts));
} else {
break;
}
}
}
}
validate();
}
项目:che
文件:RenameAnalyzeUtil.java
@Override
public boolean visit(SimpleName node) {
VariableDeclaration decl = getVariableDeclaration(node);
if (decl == null) return super.visit(node);
IVariableBinding binding = decl.resolveBinding();
if (binding == null) return super.visit(node);
boolean keysEqual = fKey.equals(binding.getKey());
boolean rangeInSet =
fRanges.contains(new Region(node.getStartPosition(), node.getLength()));
if (keysEqual && !rangeInSet) fProblemNodes.add(node);
if (!keysEqual && rangeInSet) fProblemNodes.add(node);
/*
* if (!keyEquals && !rangeInSet)
* ok, different local variable.
*
* if (keyEquals && rangeInSet)
* ok, renamed local variable & has been renamed.
*/
return super.visit(node);
}
项目:gwt-eclipse-plugin
文件:XmlUtilities.java
/**
* Gets a region for the attribute's value (without the quotes).
*/
public static IRegion getAttributeValueRegion(IDOMAttr attribute) {
String attrValue = attribute.getValueRegionText();
if (attrValue == null) {
return null;
}
int offset = attribute.getValueRegionStartOffset();
int length = attrValue.length();
// Strip off the quotes
if (isXmlQuote(attrValue.charAt(0))) {
offset++;
length--;
}
if (isXmlQuote(attrValue.charAt(attrValue.length() - 1))) {
length--;
}
return new Region(offset, length);
}
项目:gwt-eclipse-plugin
文件:UiBinderXmlParser.java
private void tryParseCssElExpression(IDOMElement styleElement,
String remainingFragments, int remainingFragmentsOffsetInDoc,
IRegion fieldRefRegion) {
CssExtractor extractor = UiBinderXmlModelUtilities.createCssExtractorForStyleElement(
styleElement, javaProject);
if (extractor != null) {
for (String selector : CssSelectorNameCollector.getValidSelectorNames(extractor.getCssDocument())) {
if (selector.equals(remainingFragments)) {
return;
}
}
}
if (remainingFragments.length() > 0) {
problemMarkerManager.setCssSelectorFragmentUndefinedError(new Region(
remainingFragmentsOffsetInDoc, remainingFragments.length()),
remainingFragments);
} else {
problemMarkerManager.setCssSelectorFragmentUnspecifiedError(fieldRefRegion);
}
}
项目:velocity-edit
文件:GotoDefinitionAction.java
public void run()
{
VelocityEditor editor = (VelocityEditor) getTextEditor();
if (editor.fMouseListener.fActiveRegion != null)
{
// If the user is using the ctrl-alt mouse click feature, then
// goto the definition under the mouse, and not under the current cursor location
editor.gotoDefinition(editor.fMouseListener.fActiveRegion);
return;
}
ITextSelection selection = (ITextSelection) editor.getSelectionProvider().getSelection();
if (!selection.isEmpty())
{
editor.gotoDefinition(new Region(selection.getOffset(), selection.getLength()));
}
}
项目:velocity-edit
文件:ToggleCommentAction.java
/**
* Creates a region describing the text block (something that starts at the
* beginning of a line) completely containing the current selection.
*
* @param selection
* The selection to use
* @param document
* The document
* @return the region describing the text block comprising the given
* selection
*/
private IRegion getTextBlockFromSelection(ITextSelection selection, IDocument document)
{
try
{
IRegion line = document.getLineInformationOfOffset(selection.getOffset());
int length = selection.getLength() == 0 ? line.getLength() : selection.getLength() + (selection.getOffset() - line.getOffset());
return new Region(line.getOffset(), length);
}
catch (BadLocationException x)
{
// should not happen
// JavaPlugin.log(x);
}
return null;
}
项目:velocity-edit
文件:VelocityEditor.java
public void documentChanged(DocumentEvent event)
{
if ((fRememberedPosition != null) && !fRememberedPosition.isDeleted())
{
event.getDocument().removePosition(fRememberedPosition);
fActiveRegion = new Region(fRememberedPosition.getOffset(), fRememberedPosition.getLength());
}
fRememberedPosition = null;
ISourceViewer viewer = getSourceViewer();
if (viewer != null)
{
StyledText widget = viewer.getTextWidget();
if ((widget != null) && !widget.isDisposed())
{
widget.getDisplay().asyncExec(new Runnable() {
public void run()
{
deactivate();
}
});
}
}
}
项目:KaiZen-OpenAPI-Editor
文件:QuickFixer.java
@Override
public IRegion processFix(IDocument document, IMarker marker) throws CoreException {
int line = (int) marker.getAttribute(IMarker.LINE_NUMBER);
try {
String indent = getIndent(document, line);
// getLineOffset() is zero-based, and imarkerLine is one-based.
int endOfCurrLine = document.getLineInformation(line - 1).getOffset()
+ document.getLineInformation(line - 1).getLength();
// should be fine for first and last lines in the doc as well
String replacementText = indent + "type: object";
String delim = TextUtilities.getDefaultLineDelimiter(document);
document.replace(endOfCurrLine, 0, delim + replacementText);
return new Region(endOfCurrLine + delim.length(), replacementText.length());
} catch (BadLocationException e) {
throw new CoreException(createStatus(e, "Cannot process the IMarker"));
}
}
项目:brainfuck
文件:BfSourceViewerConfiguration.java
@Override
public IRegion getHoverRegion(ITextViewer textViewer, int offset) {
IRegion region = new Region(offset, 0);
try {
IDocument doc = textViewer.getDocument();
if (doc instanceof IDocumentExtension3) {
IDocumentExtension3 ext3 = (IDocumentExtension3) doc;
region = ext3.getPartition(EditorConstants.BF_PARTITIONING, offset, true);
}
else {
region = doc.getPartition(offset);
}
}
catch (BadPartitioningException | BadLocationException ex) {
BfActivator.getDefault().logError("Partitioning Problem", ex);
}
return region;
}
项目:gama
文件:GamlEditor.java
/**
* @see msi.gama.lang.gaml.ui.editor.IGamlEditor#applyTemplate(org.eclipse.jface.text.templates.Template)
*/
public void applyTemplateAtTheEnd(final Template t) {
try {
final IDocument doc = getDocument();
int offset = doc.getLineOffset(doc.getNumberOfLines() - 1);
doc.replace(offset, 0, "\n\n");
offset += 2;
final int length = 0;
final Position pos = new Position(offset, length);
final XtextTemplateContextType ct = new XtextTemplateContextType();
final DocumentTemplateContext dtc = new DocumentTemplateContext(ct, doc, pos);
final IRegion r = new Region(offset, length);
final TemplateProposal tp = new TemplateProposal(t, dtc, r, null);
tp.apply(getInternalSourceViewer(), (char) 0, 0, offset);
} catch (final BadLocationException e) {
e.printStackTrace();
}
}
项目:vTM-eclipse
文件:CodeLine.java
/**
* Get the partition type for the specified offset. The offset must be within
* this line.
* @param offset The offset relative to the beginning of the document.
* @return The partition that the offset is in, or null if it is outside the
* range of this line.
*/
public Partition getRegionType( int offset )
{
if( offset >= start && offset <= commentStart ) {
for( Region region : stringAreas ) {
if( offset > region.getOffset() &&
offset <= region.getOffset() + region.getLength() )
{
return Partition.STRING;
}
}
return Partition.CODE;
}
if( offset > commentStart ) {
return Partition.COMMENT;
}
ZDebug.dumpStackTrace( "Offset out of range? ", offset );
return null;
}
项目:APICloud-Studio
文件:OpenDeclarationAction.java
/**
* Open the declaration if possible.
*/
@Override
public void run()
{
ITextEditor textEditor = getTextEditor();
if (textEditor instanceof JSSourceEditor)
{
ITextSelection selection = (ITextSelection) textEditor.getSelectionProvider().getSelection();
IRegion region = new Region(selection.getOffset(), 1);
JSHyperlinkDetector detector = new JSHyperlinkDetector();
IHyperlink[] hyperlinks = detector.detectHyperlinks((AbstractThemeableEditor) textEditor, region, true);
if (!ArrayUtil.isEmpty(hyperlinks))
{
// give first link highest precedence
hyperlinks[0].open();
}
}
}
项目:APICloud-Studio
文件:ExcludeRegionList.java
public IRegion[] selectValidRanges(int start, int end)
{
final List<Region> result = new ArrayList<Region>();
for (final IRegion region : excludes)
{
final int regionEnd = region.getOffset() + region.getLength();
if (start <= regionEnd && region.getOffset() <= end)
{
if (start < region.getOffset())
{
int validEnd = Math.min(end, region.getOffset());
result.add(new Region(start, validEnd - start));
}
start = regionEnd;
if (start > end)
{
break;
}
}
}
if (start < end)
{
result.add(new Region(start, end - start));
}
return result.toArray(new IRegion[result.size()]);
}
项目:APICloud-Studio
文件:CSSTextHover.java
/**
* getFunctionRegionInfo
*
* @param node
* @return
*/
private RegionInfo getFunctionRegionInfo(CSSFunctionNode node)
{
RegionInfo result = null;
Matcher m = RGB_CHANNELS.matcher(node.toString());
if (m.matches())
{
int red = Integer.parseInt(m.group(1));
int green = Integer.parseInt(m.group(2));
int blue = Integer.parseInt(m.group(3));
// @formatter:off
result = new RegionInfo(new Region(node.getStartingOffset(), node.getLength()), new RGB(red, green, blue));
// @formatter:on
}
return result;
}