private final void cacheEdit(final TextEdit edit) { fEdits.add(edit); final TextEdit[] edits= edit.getChildren(); for (int index= 0; index < edits.length; index++) cacheEdit(edits[index]); }
private void flatten(List result, TextEdit edit) { result.add(edit); TextEdit[] children= edit.getChildren(); for (int i= 0; i < children.length; i++) { flatten(result, children[i]); } } }
private void flatten(List<TextEdit> result, TextEdit edit) { result.add(edit); TextEdit[] children= edit.getChildren(); for (int i= 0; i < children.length; i++) { flatten(result, children[i]); } } }
private void flatten(List<TextEdit> result, TextEdit edit) { result.add(edit); TextEdit[] children= edit.getChildren(); for (int i= 0; i < children.length; i++) { flatten(result, children[i]); } } }
private final void cacheEdit(final TextEdit edit) { fEdits.add(edit); final TextEdit[] edits= edit.getChildren(); for (int index= 0; index < edits.length; index++) cacheEdit(edits[index]); }
private final void cacheEdit(final TextEdit edit) { fEdits.add(edit); final TextEdit[] edits= edit.getChildren(); for (int index= 0; index < edits.length; index++) cacheEdit(edits[index]); }
/** * Recursively gets all child edits * * @param javaEdit * @return all child edits */ private TextEdit[] getAllEdits(TextEdit javaEdit) { List result = new ArrayList(); if (javaEdit instanceof MultiTextEdit) { TextEdit[] children = javaEdit.getChildren(); for (int i = 0; i < children.length; i++) result.addAll(Arrays.asList(getAllEdits(children[i]))); } else result.add(javaEdit); return (TextEdit[]) result.toArray(new TextEdit[result.size()]); }
private static void createEdit(TextEdit source, TextEdit target, Map<TextEdit, TextEdit> editMap) { TextEdit[] children= source.getChildren(); for (TextEdit child : children) { // a deleted child remains deleted even if the temporary buffer // gets modified. if (child.isDeleted()) continue; RangeMarker marker= new RangeMarker(child.getOffset(), child.getLength()); target.addChild(marker); editMap.put(marker, child); createEdit(child, marker, editMap); } }
private static void createEdit(TextEdit source, TextEdit target, Map<TextEdit, TextEdit> editMap) { TextEdit[] children= source.getChildren(); for (int i= 0; i < children.length; i++) { TextEdit child= children[i]; // a deleted child remains deleted even if the temporary buffer // gets modified. if (child.isDeleted()) continue; RangeMarker marker= new RangeMarker(child.getOffset(), child.getLength()); target.addChild(marker); editMap.put(marker, child); createEdit(child, marker, editMap); } }
private List<org.eclipse.lsp4j.TextEdit> format(ICompilationUnit cu, IDocument document, IRegion region, FormattingOptions options, boolean includeComments, IProgressMonitor monitor) { if (cu == null || document == null || region == null || monitor.isCanceled()) { return Collections.emptyList(); } CodeFormatter formatter = ToolFactory.createCodeFormatter(getOptions(options, cu)); String lineDelimiter = TextUtilities.getDefaultLineDelimiter(document); String sourceToFormat = document.get(); int kind = getFormattingKind(cu, includeComments); TextEdit format = formatter.format(kind, sourceToFormat, region.getOffset(), region.getLength(), 0, lineDelimiter); if (format == null || format.getChildren().length == 0 || monitor.isCanceled()) { // nothing to return return Collections.<org.eclipse.lsp4j.TextEdit>emptyList(); } MultiTextEdit flatEdit = TextEditUtil.flatten(format); return convertEdits(flatEdit.getChildren(), document); }
private static void flatten(TextEdit edit, MultiTextEdit result) { if (!edit.hasChildren()) { result.addChild(edit); } else { TextEdit[] children= edit.getChildren(); for (int i= 0; i < children.length; i++) { TextEdit child= children[i]; child.getParent().removeChild(0); flatten(child, result); } } }
private static void flatten(TextEdit edit, MultiTextEdit result) { if (!edit.hasChildren()) { result.addChild(edit); } else { TextEdit[] children= edit.getChildren(); for (int i= 0; i < children.length; i++) { TextEdit child= children[i]; child.getParent().removeChild(0); flatten(child, result); } } }
UndoEdit executeUndo() throws BadLocationException { UndoCollector collector= new UndoCollector(fRoot); try { if (createUndo()) collector.connect(fDocument); TextEdit[] edits= fRoot.getChildren(); for (int i= edits.length - 1; i >= 0; i--) { edits[i].performDocumentUpdating(fDocument); } } finally { collector.disconnect(fDocument); } return collector.undo; }
private static void convertTextEdit(WorkspaceEdit root, ICompilationUnit unit, TextEdit textEdits) { TextEdit[] children = textEdits.getChildren(); if (children.length == 0) { return; } for (TextEdit textEdit : children) { TextEditConverter converter = new TextEditConverter(unit, textEdit); String uri = JDTUtils.toURI(unit); if (JavaLanguageServerPlugin.getPreferencesManager().getClientPreferences().isResourceOperationSupported()) { List<Either<TextDocumentEdit, ResourceOperation>> changes = root.getDocumentChanges(); if (changes == null) { changes = new LinkedList<>(); root.setDocumentChanges(changes); } changes.add(Either.forLeft(converter.convertToTextDocumentEdit(0))); } else { Map<String, List<org.eclipse.lsp4j.TextEdit>> changes = root.getChanges(); if (changes.containsKey(uri)) { changes.get(uri).addAll(converter.convert()); } else { changes.put(uri, converter.convert()); } } } }
UndoEdit executeUndo() throws BadLocationException { UndoCollector collector= new UndoCollector(fRoot); try { if (createUndo()) collector.connect(fDocument); TextEdit[] edits= fRoot.getChildren(); for (int i= edits.length - 1; i >= 0; i--) { edits[i].performDocumentUpdating(fDocument); } } finally { collector.disconnect(fDocument); } return collector.undo; }
public static void insert(TextEdit parent, TextEdit edit) { if (!parent.hasChildren()) { parent.addChild(edit); return; } TextEdit[] children= parent.getChildren(); // First dive down to find the right parent. for (int i= 0; i < children.length; i++) { TextEdit child= children[i]; if (covers(child, edit)) { insert(child, edit); return; } } // We have the right parent. Now check if some of the children have to // be moved under the new edit since it is covering it. for (int i= children.length - 1; i >= 0; i--) { TextEdit child= children[i]; if (covers(edit, child)) { parent.removeChild(i); edit.addChild(child); } } parent.addChild(edit); }
public static void insert(TextEdit parent, TextEdit edit) { if (!parent.hasChildren()) { parent.addChild(edit); return; } TextEdit[] children= parent.getChildren(); // First dive down to find the right parent. for (int i= 0; i < children.length; i++) { TextEdit child= children[i]; if (covers(child, edit)) { insert(child, edit); return; } } // We have the right parent. Now check if some of the children have to // be moved under the new edit since it is covering it. for (int i= children.length - 1; i >= 0; i--) { TextEdit child= children[i]; if (covers(edit, child)) { parent.removeChild(i); edit.addChild(child); } } parent.addChild(edit); }
public static void insert(TextEdit parent, TextEdit edit) throws MalformedTreeException { if (!parent.hasChildren()) { parent.addChild(edit); return; } TextEdit[] children= parent.getChildren(); // First dive down to find the right parent. for (int i= 0; i < children.length; i++) { TextEdit child= children[i]; if (covers(child, edit)) { insert(child, edit); return; } } // We have the right parent. Now check if some of the children have to // be moved under the new edit since it is covering it. int removed= 0; for (int i= 0; i < children.length; i++) { TextEdit child= children[i]; if (covers(edit, child)) { parent.removeChild(i - removed++); edit.addChild(child); } } parent.addChild(edit); }
private static TextEdit shifEdit(TextEdit oldEdit, int diff) { TextEdit newEdit; if (oldEdit instanceof ReplaceEdit) { ReplaceEdit edit= (ReplaceEdit) oldEdit; newEdit= new ReplaceEdit(edit.getOffset() - diff, edit.getLength(), edit.getText()); } else if (oldEdit instanceof InsertEdit) { InsertEdit edit= (InsertEdit) oldEdit; newEdit= new InsertEdit(edit.getOffset() - diff, edit.getText()); } else if (oldEdit instanceof DeleteEdit) { DeleteEdit edit= (DeleteEdit) oldEdit; newEdit= new DeleteEdit(edit.getOffset() - diff, edit.getLength()); } else if (oldEdit instanceof MultiTextEdit) { newEdit= new MultiTextEdit(); } else { return null; // not supported } TextEdit[] children= oldEdit.getChildren(); for (int i= 0; i < children.length; i++) { TextEdit shifted= shifEdit(children[i], diff); if (shifted != null) { newEdit.addChild(shifted); } } return newEdit; }
private static TextEdit shifEdit(TextEdit oldEdit, int diff) { TextEdit newEdit; if (oldEdit instanceof ReplaceEdit) { ReplaceEdit edit= (ReplaceEdit) oldEdit; newEdit= new ReplaceEdit(edit.getOffset() - diff, edit.getLength(), edit.getText()); } else if (oldEdit instanceof InsertEdit) { InsertEdit edit= (InsertEdit) oldEdit; newEdit= new InsertEdit(edit.getOffset() - diff, edit.getText()); } else if (oldEdit instanceof DeleteEdit) { DeleteEdit edit= (DeleteEdit) oldEdit; newEdit= new DeleteEdit(edit.getOffset() - diff, edit.getLength()); } else if (oldEdit instanceof MultiTextEdit) { newEdit= new MultiTextEdit(); } else { return null; // not supported } TextEdit[] children= oldEdit.getChildren(); for (int i= 0; i < children.length; i++) { TextEdit shifted= shifEdit(children[i], diff); if (shifted != null) { newEdit.addChild(shifted); } } return newEdit; }