From ffe5a41b0178370b2e1344524d7e279962df4832 Mon Sep 17 00:00:00 2001 From: Andrew Pareles Date: Mon, 23 Dec 2024 04:33:49 -0800 Subject: [PATCH] fix rounding --- .../contrib/void/browser/inlineDiffsService.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/contrib/void/browser/inlineDiffsService.ts b/src/vs/workbench/contrib/void/browser/inlineDiffsService.ts index e6feecdc..ec499bab 100644 --- a/src/vs/workbench/contrib/void/browser/inlineDiffsService.ts +++ b/src/vs/workbench/contrib/void/browser/inlineDiffsService.ts @@ -890,8 +890,15 @@ Please finish writing the new file by applying the diff to the original file. Re // |B <-- deleted here, diff.startLine == diff.endLine // C if (diff.type === 'deletion') { - writeText = diff.originalCode + '\n' - toRange = { startLineNumber: diff.startLine, startColumn: 1, endLineNumber: diff.startLine, endColumn: 1 } + // if startLine is out of bounds (deleted lines past the diffarea), applyEdit will do a weird rounding thing, to account for that we apply the edit the line before + if (diff.startLine - 1 === diffArea.endLine) { + writeText = '\n' + diff.originalCode + toRange = { startLineNumber: diff.startLine - 1, startColumn: Number.MAX_SAFE_INTEGER, endLineNumber: diff.startLine - 1, endColumn: Number.MAX_SAFE_INTEGER } + } + else { + writeText = diff.originalCode + '\n' + toRange = { startLineNumber: diff.startLine, startColumn: 1, endLineNumber: diff.startLine, endColumn: 1 } + } } // if it was an insertion, need to delete all the lines // (this image applies to writeText and toRange, not newOriginalCode)