From aacae1de43a202e35ea88ed3ae5829586711f06f Mon Sep 17 00:00:00 2001 From: Gal Zahavi <38544478+galz10@users.noreply.github.com> Date: Tue, 5 Aug 2025 14:55:54 -0700 Subject: fix(core): prevent UI shift after vim edit (#5315) --- packages/core/src/tools/modifiable-tool.test.ts | 9 +++++++++ packages/core/src/tools/modifiable-tool.ts | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) (limited to 'packages/core/src/tools') diff --git a/packages/core/src/tools/modifiable-tool.test.ts b/packages/core/src/tools/modifiable-tool.test.ts index 47cf41fe..eb7e8dbf 100644 --- a/packages/core/src/tools/modifiable-tool.test.ts +++ b/packages/core/src/tools/modifiable-tool.test.ts @@ -94,6 +94,7 @@ describe('modifyWithEditor', () => { mockModifyContext, 'vscode' as EditorType, abortSignal, + vi.fn(), ); expect(mockModifyContext.getCurrentContent).toHaveBeenCalledWith( @@ -148,6 +149,7 @@ describe('modifyWithEditor', () => { mockModifyContext, 'vscode' as EditorType, abortSignal, + vi.fn(), ); const stats = await fsp.stat(diffDir); @@ -165,6 +167,7 @@ describe('modifyWithEditor', () => { mockModifyContext, 'vscode' as EditorType, abortSignal, + vi.fn(), ); expect(mkdirSpy).not.toHaveBeenCalled(); @@ -183,6 +186,7 @@ describe('modifyWithEditor', () => { mockModifyContext, 'vscode' as EditorType, abortSignal, + vi.fn(), ); expect(mockCreatePatch).toHaveBeenCalledWith( @@ -211,6 +215,7 @@ describe('modifyWithEditor', () => { mockModifyContext, 'vscode' as EditorType, abortSignal, + vi.fn(), ); expect(mockCreatePatch).toHaveBeenCalledWith( @@ -241,6 +246,7 @@ describe('modifyWithEditor', () => { mockModifyContext, 'vscode' as EditorType, abortSignal, + vi.fn(), ), ).rejects.toThrow('Editor failed to open'); @@ -267,6 +273,7 @@ describe('modifyWithEditor', () => { mockModifyContext, 'vscode' as EditorType, abortSignal, + vi.fn(), ); expect(consoleErrorSpy).toHaveBeenCalledTimes(2); @@ -290,6 +297,7 @@ describe('modifyWithEditor', () => { mockModifyContext, 'vscode' as EditorType, abortSignal, + vi.fn(), ); expect(mockOpenDiff).toHaveBeenCalledOnce(); @@ -311,6 +319,7 @@ describe('modifyWithEditor', () => { mockModifyContext, 'vscode' as EditorType, abortSignal, + vi.fn(), ); expect(mockOpenDiff).toHaveBeenCalledOnce(); diff --git a/packages/core/src/tools/modifiable-tool.ts b/packages/core/src/tools/modifiable-tool.ts index 4f96a49c..42de3eb6 100644 --- a/packages/core/src/tools/modifiable-tool.ts +++ b/packages/core/src/tools/modifiable-tool.ts @@ -138,6 +138,7 @@ export async function modifyWithEditor( modifyContext: ModifyContext, editorType: EditorType, _abortSignal: AbortSignal, + onEditorClose: () => void, ): Promise> { const currentContent = await modifyContext.getCurrentContent(originalParams); const proposedContent = @@ -150,7 +151,7 @@ export async function modifyWithEditor( ); try { - await openDiff(oldPath, newPath, editorType); + await openDiff(oldPath, newPath, editorType, onEditorClose); const result = getUpdatedParams( oldPath, newPath, -- cgit v1.2.3