From 2a524193d26ffca7ef62445f2069773e106f68a8 Mon Sep 17 00:00:00 2001
From: Nate Sesti <sestinj@gmail.com>
Date: Tue, 4 Jul 2023 11:58:02 -0700
Subject: 3.8 compatibility and deleting context all at once

---
 extension/src/continueIdeClient.ts | 39 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

(limited to 'extension/src')

diff --git a/extension/src/continueIdeClient.ts b/extension/src/continueIdeClient.ts
index 999bca88..c517eb98 100644
--- a/extension/src/continueIdeClient.ts
+++ b/extension/src/continueIdeClient.ts
@@ -159,6 +159,9 @@ class IdeProtocolClient {
       case "showSuggestion":
         this.showSuggestion(data.edit);
         break;
+      case "showDiff":
+        this.showDiff(data.filepath, data.replacement);
+        break;
       case "openGUI":
       case "connected":
         break;
@@ -236,6 +239,42 @@ class IdeProtocolClient {
     );
   }
 
+  contentProvider: vscode.Disposable | null = null;
+
+  showDiff(filepath: string, replacement: string) {
+    const myProvider = new (class
+      implements vscode.TextDocumentContentProvider
+    {
+      onDidChangeEmitter = new vscode.EventEmitter<vscode.Uri>();
+      onDidChange = this.onDidChangeEmitter.event;
+      provideTextDocumentContent = (uri: vscode.Uri) => {
+        return replacement;
+      };
+    })();
+    this.contentProvider = vscode.workspace.registerTextDocumentContentProvider(
+      "continueDiff",
+      myProvider
+    );
+
+    // Call the event fire
+    const diffFilename = `continueDiff://${filepath}`;
+    myProvider.onDidChangeEmitter.fire(vscode.Uri.parse(diffFilename));
+
+    const leftUri = vscode.Uri.file(filepath);
+    const rightUri = vscode.Uri.parse(diffFilename);
+    const title = "Continue Diff";
+    vscode.commands
+      .executeCommand("vscode.diff", leftUri, rightUri, title)
+      .then(
+        () => {
+          console.log("Diff view opened successfully");
+        },
+        (error) => {
+          console.error("Error opening diff view:", error);
+        }
+      );
+  }
+
   openFile(filepath: string) {
     // vscode has a builtin open/get open files
     openEditorAndRevealRange(filepath, undefined, vscode.ViewColumn.One);
-- 
cgit v1.2.3-70-g09d2