From 2c86cbbb4ec8c6a3fa1e1cd875dd84442e9c60c1 Mon Sep 17 00:00:00 2001 From: "bobo.yang" Date: Fri, 5 May 2023 16:52:25 +0800 Subject: [PATCH] add diff with selection --- src/applyCode.ts | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/applyCode.ts b/src/applyCode.ts index 8c4b762..9384ab2 100644 --- a/src/applyCode.ts +++ b/src/applyCode.ts @@ -56,6 +56,8 @@ export async function diffView(code: string) { return; } + const selectedText = editor.document.getText(editor.selection); + const curFile = editor.document.fileName; // get file name from fileSelected @@ -68,6 +70,18 @@ export async function diffView(code: string) { // save code to temp file await vscode.workspace.fs.writeFile(vscode.Uri.file(tempFile), Buffer.from(code)); - // open diff view - vscode.commands.executeCommand('vscode.diff', vscode.Uri.file(curFile), vscode.Uri.file(tempFile), 'Diff View'); + if (selectedText) { + // create temp directory and file + const tempDir = await createTempSubdirectory('devchat/context'); + const tempSelectCodeFile = path.join(tempDir, fileName); + + // save code to temp file + await vscode.workspace.fs.writeFile(vscode.Uri.file(tempSelectCodeFile), Buffer.from(selectedText)); + + // open diff view + vscode.commands.executeCommand('vscode.diff', vscode.Uri.file(tempSelectCodeFile), vscode.Uri.file(tempFile), 'Diff View'); + } else { + // open diff view + vscode.commands.executeCommand('vscode.diff', vscode.Uri.file(curFile), vscode.Uri.file(tempFile), 'Diff View'); + } }