diff options
Diffstat (limited to 'extension/src')
| -rw-r--r-- | extension/src/continueIdeClient.ts | 39 | 
1 files changed, 39 insertions, 0 deletions
| 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); | 
