From 31f5fabc5402648bcc24042cc2f907132880c106 Mon Sep 17 00:00:00 2001 From: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com> Date: Sun, 6 Oct 2024 05:46:43 -0400 Subject: [PATCH] Refactor cline-diff --- src/extension.ts | 3 ++- src/integrations/editor/DiffViewProvider.ts | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 0cf4996..e3d2cd9 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -5,6 +5,7 @@ import * as vscode from "vscode" import { ClineProvider } from "./core/webview/ClineProvider" import { createClineAPI } from "./exports" import "./utils/path" // necessary to have access to String.prototype.toPosix +import { DIFF_VIEW_URI_SCHEME } from "./integrations/editor/DiffViewProvider" /* Built using https://github.com/microsoft/vscode-webview-ui-toolkit @@ -104,7 +105,7 @@ export function activate(context: vscode.ExtensionContext) { } })() context.subscriptions.push( - vscode.workspace.registerTextDocumentContentProvider("claude-dev-diff", diffContentProvider) + vscode.workspace.registerTextDocumentContentProvider(DIFF_VIEW_URI_SCHEME, diffContentProvider) ) // URI Handler diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index dc7c6fe..bdea2c6 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -8,6 +8,8 @@ import { DecorationController } from "./DecorationController" import * as diff from "diff" import { diagnosticsToProblemsString, getNewDiagnostics } from "../diagnostics" +export const DIFF_VIEW_URI_SCHEME = "cline-diff" + export class DiffViewProvider { editType?: "create" | "modify" isEditing = false @@ -244,7 +246,7 @@ export class DiffViewProvider { .flatMap((tg) => tg.tabs) .filter( (tab) => - tab.input instanceof vscode.TabInputTextDiff && tab.input?.original?.scheme === "claude-dev-diff" + tab.input instanceof vscode.TabInputTextDiff && tab.input?.original?.scheme === DIFF_VIEW_URI_SCHEME ) for (const tab of tabs) { // trying to close dirty views results in save popup @@ -265,7 +267,7 @@ export class DiffViewProvider { .find( (tab) => tab.input instanceof vscode.TabInputTextDiff && - tab.input?.original?.scheme === "claude-dev-diff" && + tab.input?.original?.scheme === DIFF_VIEW_URI_SCHEME && arePathsEqual(tab.input.modified.fsPath, uri.fsPath) ) if (diffTab && diffTab.input instanceof vscode.TabInputTextDiff) { @@ -284,11 +286,11 @@ export class DiffViewProvider { }) vscode.commands.executeCommand( "vscode.diff", - vscode.Uri.parse(`claude-dev-diff:${fileName}`).with({ + vscode.Uri.parse(`${DIFF_VIEW_URI_SCHEME}:${fileName}`).with({ query: Buffer.from(this.originalContent ?? "").toString("base64"), }), uri, - `${fileName}: ${fileExists ? "Original ↔ Claude's Changes" : "New File"} (Editable)` + `${fileName}: ${fileExists ? "Original ↔ Cline's Changes" : "New File"} (Editable)` ) // This should never happen but if it does it's worth investigating setTimeout(() => {