in src/Utils/xml/index.ts [56:78]
async function updateWorkspaceEdit(edit: vscode.WorkspaceEdit, uri: vscode.Uri, parentNode: Element, nodeToInsert: PomNode): Promise<vscode.WorkspaceEdit> {
const currentDocument: vscode.TextDocument = await vscode.workspace.openTextDocument(uri);
const baseIndent: string = getIndentation(currentDocument, parentNode.startIndex);
let insertOffset = parentNode.endIndex - (parentNode.name.length + 3)/* "</parentNode>".length */ + 1;
let insertPos: vscode.Position = currentDocument.positionAt(insertOffset);
// Not to mess up indentation, move cursor to line start:
// <tab><tab>|</dependencies> => |<tab><whitespace></dependencies>
const insPosLineStart: vscode.Position = new vscode.Position(insertPos.line, 0);
const contentBefore: string = currentDocument.getText(new vscode.Range(insPosLineStart, insertPos));
if (contentBefore.trim() === "") {
insertOffset -= insertPos.character;
insertPos = insPosLineStart;
}
const textEditor: vscode.TextEditor = await vscode.window.showTextDocument(currentDocument);
const options: vscode.TextEditorOptions = textEditor.options;
const indent: string = options.insertSpaces ? " ".repeat(options.tabSize as number) : "\t";
const eol: string = currentDocument.eol === vscode.EndOfLine.LF ? "\n" : "\r\n";
const targetText: string = constructNodeText(nodeToInsert, baseIndent, indent, eol);
edit.insert(currentDocument.uri, insertPos, targetText);
return edit;
}