fix(hashline-edit): do not restore indentation for replace_lines
- applyReplaceLines: use stripped array directly instead of restoreLeadingIndent
- applySetLine: keep restoreLeadingIndent (1:1 replacement needs indent preservation)
- Added test case for replace_lines preserving new line indentation
- All 3025 tests pass
🤖 Generated with OhMyOpenCode assistance
This commit is contained in:
parent
4bbc55bb02
commit
0832505e13
@ -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", "}"])
|
||||
})
|
||||
})
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user