use of org.eclipse.che.api.languageserver.shared.lsapi.RangeDTO in project che by eclipse.
the class LanguageServerFormatter method applyEdits.
private void applyEdits(List<TextEditDTO> edits, Document document) {
HandlesUndoRedo undoRedo = null;
if (editor instanceof UndoableEditor) {
undoRedo = ((UndoableEditor) editor).getUndoRedo();
}
try {
if (undoRedo != null) {
undoRedo.beginCompoundChange();
}
// #2437: apply the text edits from last to first to avoid messing up the document
Collections.reverse(edits);
for (TextEditDTO change : edits) {
RangeDTO range = change.getRange();
document.replace(range.getStart().getLine(), range.getStart().getCharacter(), range.getEnd().getLine(), range.getEnd().getCharacter(), change.getNewText());
}
} catch (final Exception e) {
Log.error(getClass(), e);
} finally {
if (undoRedo != null) {
undoRedo.endCompoundChange();
}
}
}
use of org.eclipse.che.api.languageserver.shared.lsapi.RangeDTO in project che by eclipse.
the class GoToSymbolAction method toQuickOpenEntries.
private List<SymbolEntry> toQuickOpenEntries(List<SymbolInformationDTO> items, final String value) {
List<SymbolEntry> result = new ArrayList<>();
String normalValue = value;
if (value.startsWith(SCOPE_PREFIX)) {
normalValue = normalValue.substring(SCOPE_PREFIX.length());
}
for (SymbolInformationDTO item : items) {
String label = item.getName().trim();
List<Match> highlights = fuzzyMatches.fuzzyMatch(normalValue, label);
if (highlights != null) {
String description = null;
if (item.getContainerName() != null) {
description = item.getContainerName();
}
RangeDTO range = item.getLocation().getRange();
TextRange textRange = new TextRange(new TextPosition(range.getStart().getLine(), range.getStart().getCharacter()), new TextPosition(range.getEnd().getLine(), range.getEnd().getCharacter()));
//TODO add icons
result.add(new SymbolEntry(label, symbolKindHelper.from(item.getKind()), description, textRange, (TextEditor) editorAgent.getActiveEditor(), highlights, symbolKindHelper.getIcon(item.getKind())));
}
}
if (!value.isEmpty()) {
if (value.startsWith(SCOPE_PREFIX)) {
Collections.sort(result, new Comparator<SymbolEntry>() {
@Override
public int compare(SymbolEntry o1, SymbolEntry o2) {
return sortScoped(value.toLowerCase(), o1, o2);
}
});
} else {
Collections.sort(result, new Comparator<SymbolEntry>() {
@Override
public int compare(SymbolEntry o1, SymbolEntry o2) {
return sortNormal(value.toLowerCase(), o1, o2);
}
});
}
}
if (!result.isEmpty() && value.startsWith(SCOPE_PREFIX)) {
String currentType = null;
SymbolEntry currentEntry = null;
int counter = 0;
for (int i = 0; i < result.size(); i++) {
SymbolEntry res = result.get(i);
if (!res.getType().equals(currentType)) {
if (currentEntry != null) {
currentEntry.setGroupLabel(typeToLabel(currentType, counter));
}
currentType = res.getType();
currentEntry = res;
counter = 1;
res.setWithBorder(i > 0);
} else {
counter++;
}
}
if (currentEntry != null) {
currentEntry.setGroupLabel(typeToLabel(currentType, counter));
}
} else if (!result.isEmpty()) {
result.get(0).setGroupLabel(localization.goToSymbolSymbols(result.size()));
}
return result;
}
Aggregations