From 83b813ab2af04b2ba83866e82cb524594a251447 Mon Sep 17 00:00:00 2001 From: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com> Date: Tue, 10 Sep 2024 20:55:53 -0400 Subject: [PATCH] Scroll to first changed line when claude edits --- src/ClaudeDev.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/ClaudeDev.ts b/src/ClaudeDev.ts index d75869a..4d4f732 100644 --- a/src/ClaudeDev.ts +++ b/src/ClaudeDev.ts @@ -847,6 +847,28 @@ export class ClaudeDev { // Apply the edit, but without saving so this doesnt trigger a local save in timeline history await vscode.workspace.applyEdit(edit) // has the added benefit of maintaing the file's original EOLs + // Find the first position where the content differs and scroll to the first changed line if found + let firstDiffPosition: vscode.Position | undefined + const originalLines = originalContent.split("\n") + const newLines = newContent.split("\n") + for (let i = 0; i < Math.max(originalLines.length, newLines.length); i++) { + if (i < originalLines.length && i < newLines.length) { + if (originalLines[i] !== newLines[i]) { + firstDiffPosition = new vscode.Position(i, 0) + break + } + } else { + firstDiffPosition = new vscode.Position(i, 0) + break + } + } + if (firstDiffPosition) { + vscode.window.activeTextEditor?.revealRange( + new vscode.Range(firstDiffPosition, firstDiffPosition), + vscode.TextEditorRevealType.InCenter + ) + } + // remove cursor from the document await vscode.commands.executeCommand("workbench.action.focusSideBar")