in src/handlers/excludeDependencyHandler.ts [48:76]
async function insertExcludeDependency(pomPath: string, targetNode: ElementNode, gid: string, aid: string): Promise<void> {
if (targetNode.children === undefined || targetNode.contentStart === undefined || targetNode.contentEnd === undefined) {
throw new UserError("Invalid target XML node to delete dependency.");
}
const currentDocument: vscode.TextDocument = await vscode.workspace.openTextDocument(pomPath);
const textEditor: vscode.TextEditor = await vscode.window.showTextDocument(currentDocument);
const baseIndent: string = getIndentation(currentDocument, targetNode.contentEnd);
const options: vscode.TextEditorOptions = textEditor.options;
const indent: string = options.insertSpaces && typeof options.tabSize === "number" ? " ".repeat(options.tabSize) : "\t";
const eol: string = currentDocument.eol === vscode.EndOfLine.LF ? "\n" : "\r\n";
let insertPosition: vscode.Position;
let targetText: string;
const exclusionNode: ElementNode | undefined = targetNode.children?.find(node => node.tag === XmlTagName.Exclusions);
if (exclusionNode === undefined) {
insertPosition = currentDocument.positionAt(targetNode.contentEnd);
targetText = constructExclusionsNode(gid, aid, baseIndent, indent, eol);
} else {
if (exclusionNode.contentStart === undefined) {
throw new UserError("Invalid insert position.");
}
insertPosition = currentDocument.positionAt(exclusionNode.contentStart);
targetText = constructExclusionNode(gid, aid, baseIndent, indent, eol);
}
const edit: vscode.WorkspaceEdit = new vscode.WorkspaceEdit();
edit.insert(currentDocument.uri, insertPosition, targetText);
await vscode.workspace.applyEdit(edit);
const endingPosition: vscode.Position = currentDocument.positionAt(currentDocument.offsetAt(insertPosition) + targetText.length);
textEditor.revealRange(new vscode.Range(insertPosition, endingPosition));
}