diff --git a/src/tools/hashline-edit/edit-operations.test.ts b/src/tools/hashline-edit/edit-operations.test.ts index 45abaa4c..40c2a36d 100644 --- a/src/tools/hashline-edit/edit-operations.test.ts +++ b/src/tools/hashline-edit/edit-operations.test.ts @@ -127,4 +127,15 @@ describe("hashline edit operations", () => { //#then expect(result).toEqual(["before", "new 1", "new 2", "after"]) }) + + it("does not restore indentation for replace_lines", () => { + //#given + const lines = ["if (x) {", " return 1", " return 2", "}"] + + //#when + const result = applyReplaceLines(lines, anchorFor(lines, 2), anchorFor(lines, 3), ["return 3", "return 4"]) + + //#then + expect(result).toEqual(["if (x) {", "return 3", "return 4", "}"]) + }) }) diff --git a/src/tools/hashline-edit/edit-operations.ts b/src/tools/hashline-edit/edit-operations.ts index 9929e9ac..df31d997 100644 --- a/src/tools/hashline-edit/edit-operations.ts +++ b/src/tools/hashline-edit/edit-operations.ts @@ -124,12 +124,7 @@ export function applyReplaceLines( const result = [...lines] const stripped = stripRangeBoundaryEcho(lines, startLine, endLine, toNewLines(newText)) - const newLines = stripped.map((entry, idx) => { - const oldLine = lines[startLine - 1 + idx] - if (!oldLine) return entry - return restoreLeadingIndent(oldLine, entry) - }) - result.splice(startLine - 1, endLine - startLine + 1, ...newLines) + result.splice(startLine - 1, endLine - startLine + 1, ...stripped) return result }