/** * Returns rendered text-edits. * * @return rendered edits */ @Override public List<TextEdit> getRenderedTextEdits() { List<TextEdit> edits = new ArrayList<>(); //Calculate text-edits positions.forEach( (pos, value) -> value.forEach((placeHolder, content) -> { Position position = new Position(pos.eLine, pos.eCol); Range range = new Range(position, position); TextEdit textEdit = new TextEdit(range, content); edits.add(textEdit); }) ); return edits; }
/** * Renders the template. * * @return rendered string */ public List<TextEdit> getRenderedTextEdits() { Position position = new Position(0, 0); Range range = new Range(position, position); TextEdit textEdit = new TextEdit(range, getRenderedContent()); List<TextEdit> edits = new ArrayList<>(); edits.add(textEdit); return edits; }
public ReplaceStringData(DocumentRegion target, String newText) throws BadLocationException { this.uri = target.getDocument().getUri(); this.edit = new TextEdit(target.asRange(), newText); }
/** * Get TextEdit from doc attachment info. * * @param attachmentInfo Doc attachment info * @return {@link TextEdit} Text edit for attachment info */ private static TextEdit getTextEdit(DocAttachmentInfo attachmentInfo) { Range range = new Range(attachmentInfo.getDocStartPos(), attachmentInfo.getDocStartPos()); return new TextEdit(range, attachmentInfo.getDocAttachment()); } }
@Override public boolean visit(DeleteEdit edit) { try { org.eclipse.lsp4j.TextEdit te = new org.eclipse.lsp4j.TextEdit(); te.setNewText(""); te.setRange(JDTUtils.toRange(compilationUnit,edit.getOffset(),edit.getLength())); converted.add(te); } catch (JavaModelException e) { JavaLanguageServerPlugin.logException("Error converting TextEdits", e); } return super.visit(edit); }
@Override public boolean visit(ReplaceEdit edit) { try { org.eclipse.lsp4j.TextEdit te = new org.eclipse.lsp4j.TextEdit(); te.setNewText(edit.getText()); te.setRange(JDTUtils.toRange(compilationUnit,edit.getOffset(),edit.getLength())); converted.add(te); } catch (JavaModelException e) { JavaLanguageServerPlugin.logException("Error converting TextEdits", e); } return super.visit(edit); }
@Override public boolean visit(InsertEdit edit) { try { org.eclipse.lsp4j.TextEdit te = new org.eclipse.lsp4j.TextEdit(); te.setNewText(edit.getText()); te.setRange(JDTUtils.toRange(compilationUnit,edit.getOffset(),edit.getLength())); converted.add(te); } catch (JavaModelException e) { JavaLanguageServerPlugin.logException("Error converting TextEdits", e); } return super.visit(edit); }
/** * Get the text edit for an auto import statement. * * @param ctx Service operation context * @param orgName package org name * @param pkgName package name * @return {@link List} List of Text Edits to apply */ public static List<TextEdit> getAutoImportTextEdits(LSContext ctx, String orgName, String pkgName) { if (UtilSymbolKeys.BALLERINA_KW.equals(orgName) && UtilSymbolKeys.BUILTIN_KW.equals(pkgName)) { return null; } String relativePath = ctx.get(DocumentServiceKeys.RELATIVE_FILE_PATH_KEY); BLangPackage pkg = ctx.get(DocumentServiceKeys.CURRENT_BLANG_PACKAGE_CONTEXT_KEY); BLangPackage srcOwnerPkg = CommonUtil.getSourceOwnerBLangPackage(relativePath, pkg); List<BLangImportPackage> imports = CommonUtil.getCurrentFileImports(srcOwnerPkg, ctx); Position start = new Position(0, 0); if (!imports.isEmpty()) { BLangImportPackage last = CommonUtil.getLastItem(imports); int endLine = last.getPosition().getEndLine(); start = new Position(endLine, 0); } String importStatement = ItemResolverConstants.IMPORT + " " + orgName + UtilSymbolKeys.SLASH_KEYWORD_KEY + pkgName + UtilSymbolKeys.SEMI_COLON_SYMBOL_KEY + CommonUtil.LINE_SEPARATOR; return Collections.singletonList(new TextEdit(new Range(start, start), importStatement)); }
public static QuickfixEdit createReplacementQuickfic(TextDocument doc, YamlPathEdits edits) throws BadLocationException { TextReplace replaceEdit = edits.asReplacement(doc); if (replaceEdit!=null) { WorkspaceEdit wsEdits = new WorkspaceEdit(); wsEdits.setChanges(ImmutableMap.of( doc.getUri(), ImmutableList.of(new TextEdit(doc.toRange(replaceEdit.getRegion()), replaceEdit.newText)) )); Position newCursor = getCursorPostionAfter(doc, edits); return new QuickfixEdit(wsEdits, newCursor==null ? null : new CursorMovement(doc.getUri(), newCursor)); } return NULL_FIX; }
private TextEdit addPackage(String pkgName, BLangPackage srcOwnerPkg, LSContext context) { DiagnosticPos pos = null; // Filter the imports except the runtime import List<BLangImportPackage> imports = CommonUtil.getCurrentFileImports(srcOwnerPkg, context); if (!imports.isEmpty()) { BLangImportPackage lastImport = CommonUtil.getLastItem(imports); pos = lastImport.getPosition(); } int endCol = 0; int endLine = pos == null ? 0 : pos.getEndLine(); String editText = "import " + pkgName + ";\n"; Range range = new Range(new Position(endLine, endCol), new Position(endLine, endCol)); return new TextEdit(range, editText); }
private TextEdit addPackage(String pkgName, BLangPackage srcOwnerPkg, LSContext context) { DiagnosticPos pos = null; // Filter the imports except the runtime import List<BLangImportPackage> imports = CommonUtil.getCurrentFileImports(srcOwnerPkg, context); if (!imports.isEmpty()) { BLangImportPackage lastImport = CommonUtil.getLastItem(imports); pos = lastImport.getPosition(); } int endCol = 0; int endLine = pos == null ? 0 : pos.getEndLine(); String editText = "import " + pkgName + ";\n"; Range range = new Range(new Position(endLine, endCol), new Position(endLine, endCol)); return new TextEdit(range, editText); }
private static org.eclipse.lsp4j.TextEdit convertEdit(TextEdit edit, IDocument document) { org.eclipse.lsp4j.TextEdit textEdit = new org.eclipse.lsp4j.TextEdit(); if (edit instanceof ReplaceEdit) { ReplaceEdit replaceEdit = (ReplaceEdit) edit; textEdit.setNewText(replaceEdit.getText()); int offset = edit.getOffset(); textEdit.setRange(new Range(createPosition(document, offset), createPosition(document, offset + edit.getLength()))); } return textEdit; }
@Override public boolean visit(MultiTextEdit edit) { try { org.eclipse.lsp4j.TextEdit te = new org.eclipse.lsp4j.TextEdit(); te.setRange(JDTUtils.toRange(compilationUnit, edit.getOffset(), edit.getLength())); Document doc = new Document(compilationUnit.getSource()); edit.apply(doc, TextEdit.UPDATE_REGIONS); String content = doc.get(edit.getOffset(), edit.getLength()); te.setNewText(content); converted.add(te); return false; } catch (JavaModelException | MalformedTreeException | BadLocationException e) { JavaLanguageServerPlugin.logException("Error converting TextEdits", e); } return false; }
protected TextEdit toTextEdit(final Document document, final String formattedText, final int startOffset, final int length) { TextEdit _textEdit = new TextEdit(); final Procedure1<TextEdit> _function = (TextEdit it) -> { it.setNewText(formattedText); Range _range = new Range(); final Procedure1<Range> _function_1 = (Range it_1) -> { it_1.setStart(document.getPosition(startOffset)); it_1.setEnd(document.getPosition((startOffset + length))); }; Range _doubleArrow = ObjectExtensions.<Range>operator_doubleArrow(_range, _function_1); it.setRange(_doubleArrow); }; return ObjectExtensions.<TextEdit>operator_doubleArrow(_textEdit, _function); }
@Override public boolean visit(MoveSourceEdit edit) { try { // If MoveSourcedEdit & MoveTargetEdit are the same level, should delete the original contenxt. // See issue#https://github.com/redhat-developer/vscode-java/issues/253 if (edit.getParent() != null && edit.getTargetEdit() != null && edit.getParent().equals(edit.getTargetEdit().getParent())) { org.eclipse.lsp4j.TextEdit te = new org.eclipse.lsp4j.TextEdit(); te.setNewText(""); te.setRange(JDTUtils.toRange(compilationUnit, edit.getOffset(), edit.getLength())); converted.add(te); return false; } } catch (JavaModelException e) { JavaLanguageServerPlugin.logException("Error converting TextEdits", e); } return super.visit(edit); }
@Override public void didChange(final DidChangeTextDocumentParams params) { final Function0<BuildManager.Buildable> _function = () -> { final Function1<TextDocumentContentChangeEvent, TextEdit> _function_1 = (TextDocumentContentChangeEvent event) -> { Range _range = event.getRange(); String _text = event.getText(); return new TextEdit(_range, _text); }; return this.workspaceManager.didChange(this._uriExtensions.toUri(params.getTextDocument().getUri()), params.getTextDocument().getVersion(), ListExtensions.<TextDocumentContentChangeEvent, TextEdit>map(params.getContentChanges(), _function_1)); }; final Function2<CancelIndicator, BuildManager.Buildable, List<IResourceDescription.Delta>> _function_1 = (CancelIndicator cancelIndicator, BuildManager.Buildable buildable) -> { return buildable.build(cancelIndicator); }; this.requestManager.<BuildManager.Buildable, List<IResourceDescription.Delta>>runWrite(_function, _function_1); }
@Override public boolean visit(CopySourceEdit edit) { try { if (edit.getTargetEdit() != null) { org.eclipse.lsp4j.TextEdit te = new org.eclipse.lsp4j.TextEdit(); te.setRange(JDTUtils.toRange(compilationUnit, edit.getOffset(), edit.getLength())); Document doc = new Document(compilationUnit.getSource()); edit.apply(doc, TextEdit.UPDATE_REGIONS); String content = doc.get(edit.getOffset(), edit.getLength()); if (edit.getSourceModifier() != null) { content = applySourceModifier(content, edit.getSourceModifier()); } te.setNewText(content); converted.add(te); } return false; } catch (JavaModelException | MalformedTreeException | BadLocationException e) { JavaLanguageServerPlugin.logException("Error converting TextEdits", e); } return super.visit(edit); }
@Override public boolean visit(CopyTargetEdit edit) { try { if (edit.getSourceEdit() != null) { org.eclipse.lsp4j.TextEdit te = new org.eclipse.lsp4j.TextEdit(); te.setRange(JDTUtils.toRange(compilationUnit, edit.getOffset(), edit.getLength())); Document doc = new Document(compilationUnit.getSource()); edit.apply(doc, TextEdit.UPDATE_REGIONS); String content = doc.get(edit.getSourceEdit().getOffset(), edit.getSourceEdit().getLength()); if (edit.getSourceEdit().getSourceModifier() != null) { content = applySourceModifier(content, edit.getSourceEdit().getSourceModifier()); } te.setNewText(content); converted.add(te); } return false; // do not visit children } catch (MalformedTreeException | BadLocationException | CoreException e) { JavaLanguageServerPlugin.logException("Error converting TextEdits", e); } return super.visit(edit); }
@Override public boolean visit(MoveTargetEdit edit) { try { if (edit.getSourceEdit() != null) { org.eclipse.lsp4j.TextEdit te = new org.eclipse.lsp4j.TextEdit(); te.setRange(JDTUtils.toRange(compilationUnit, edit.getOffset(), edit.getLength())); Document doc = new Document(compilationUnit.getSource()); edit.apply(doc, TextEdit.UPDATE_REGIONS); String content = doc.get(edit.getSourceEdit().getOffset(), edit.getSourceEdit().getLength()); if (edit.getSourceEdit().getSourceModifier() != null) { content = applySourceModifier(content, edit.getSourceEdit().getSourceModifier()); } te.setNewText(content); converted.add(te); return false; // do not visit children } } catch (MalformedTreeException | BadLocationException | CoreException e) { JavaLanguageServerPlugin.logException("Error converting TextEdits", e); } return super.visit(edit); }
@Test public void testEquals() { Assert.assertEquals(new TextDocumentIdentifier("foo"), new TextDocumentIdentifier("foo")); Assert.assertNotEquals(new TextDocumentIdentifier("foo"), new TextDocumentIdentifier("bar")); CompletionItem e1 = new CompletionItem(); e1.setAdditionalTextEdits(new ArrayList<>()); e1.getAdditionalTextEdits().add(new TextEdit(new Range(new Position(1,1), new Position(1,1)), "foo")); CompletionItem e2 = new CompletionItem(); e2.setAdditionalTextEdits(new ArrayList<>()); e2.getAdditionalTextEdits().add(new TextEdit(new Range(new Position(1,1), new Position(1,1)), "foo")); CompletionItem e3 = new CompletionItem(); e3.setAdditionalTextEdits(new ArrayList<>()); e3.getAdditionalTextEdits().add(new TextEdit(new Range(new Position(1,1), new Position(1,2)), "foo")); Assert.assertEquals(e1, e2); Assert.assertNotEquals(e1, e3); Assert.assertEquals(e1.hashCode(), e2.hashCode()); Assert.assertNotEquals(e1.hashCode(), e3.hashCode()); }