From d0483ba15b4ad13399a3385ae351cf33cca3db7f Mon Sep 17 00:00:00 2001 From: Nate Sesti Date: Fri, 18 Aug 2023 00:59:27 -0700 Subject: feat: :sparkles: alt+cmd+d to automatically debug terminal! --- extension/src/commands.ts | 3 +++ extension/src/continueIdeClient.ts | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+) (limited to 'extension/src') diff --git a/extension/src/commands.ts b/extension/src/commands.ts index ea12699e..4761826e 100644 --- a/extension/src/commands.ts +++ b/extension/src/commands.ts @@ -63,6 +63,9 @@ const commandsMap: { [command: string]: (...args: any) => any } = { const uri = vscode.Uri.file(logFile); await vscode.window.showTextDocument(uri); }, + "continue.debugTerminal": async () => { + await ideProtocolClient.debugTerminal(); + }, }; export function registerAllCommands(context: vscode.ExtensionContext) { diff --git a/extension/src/continueIdeClient.ts b/extension/src/continueIdeClient.ts index 5b9e285d..6c107a63 100644 --- a/extension/src/continueIdeClient.ts +++ b/extension/src/continueIdeClient.ts @@ -227,6 +227,11 @@ class IdeProtocolClient { contents: this.readFile(data.filepath), }); break; + case "getTerminalContents": + messenger.send("getTerminalContents", { + contents: await this.getTerminalContents(), + }); + break; case "editFile": const fileEdit = await this.editFile(data.edit); messenger.send("editFile", { @@ -491,6 +496,18 @@ class IdeProtocolClient { return contents; } + async getTerminalContents(): Promise { + await vscode.commands.executeCommand("workbench.action.terminal.selectAll"); + await vscode.commands.executeCommand( + "workbench.action.terminal.copySelection" + ); + await vscode.commands.executeCommand( + "workbench.action.terminal.clearSelection" + ); + let terminalContents = await vscode.env.clipboard.readText(); + return terminalContents; + } + editFile(edit: FileEdit): Promise { return new Promise((resolve, reject) => { openEditorAndRevealRange( @@ -574,6 +591,11 @@ class IdeProtocolClient { this.messenger?.send("mainUserInput", { input }); } + async debugTerminal() { + const contents = await this.getTerminalContents(); + this.messenger?.send("debugTerminal", { contents }); + } + deleteAtIndex(index: number) { this.messenger?.send("deleteAtIndex", { index }); } -- cgit v1.2.3-70-g09d2