diff options
author | Nate Sesti <sestinj@gmail.com> | 2023-06-06 17:50:50 -0400 |
---|---|---|
committer | Nate Sesti <sestinj@gmail.com> | 2023-06-06 17:50:50 -0400 |
commit | 7af8208d0adb9586e60bd67fd6f4f321a35262d8 (patch) | |
tree | e3b5e19f9a71d1267d8cd7e1271c47a02b9641cf /extension/src/continueIdeClient.ts | |
parent | 42d9dadcaac714b7d6e789fbdeafb2dad04dbed7 (diff) | |
download | sncontinue-7af8208d0adb9586e60bd67fd6f4f321a35262d8.tar.gz sncontinue-7af8208d0adb9586e60bd67fd6f4f321a35262d8.tar.bz2 sncontinue-7af8208d0adb9586e60bd67fd6f4f321a35262d8.zip |
trying to reliably capture terminal output in vsc
Diffstat (limited to 'extension/src/continueIdeClient.ts')
-rw-r--r-- | extension/src/continueIdeClient.ts | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/extension/src/continueIdeClient.ts b/extension/src/continueIdeClient.ts index 25287d32..e84602f0 100644 --- a/extension/src/continueIdeClient.ts +++ b/extension/src/continueIdeClient.ts @@ -12,6 +12,7 @@ import { debugPanelWebview, setupDebugPanel } from "./debugPanel"; import { FileEditWithFullContents } from "../schema/FileEditWithFullContents"; import fs = require("fs"); import { WebsocketMessenger } from "./util/messenger"; +import { CapturedTerminal } from "./terminal/terminalEmulator"; class IdeProtocolClient { private messenger: WebsocketMessenger | null = null; @@ -100,7 +101,9 @@ class IdeProtocolClient { this.highlightCode(data.rangeInFile, data.color); break; case "runCommand": - this.runCommand(data.command); + this.messenger?.send("runCommand", { + output: await this.runCommand(data.command), + }); break; case "saveFile": this.saveFile(data.filepath); @@ -316,18 +319,15 @@ class IdeProtocolClient { return rangeInFiles; } - runCommand(command: string) { - if (vscode.window.terminals.length === 0) { - const terminal = vscode.window.createTerminal(); - terminal.show(); - terminal.sendText("bash", true); - terminal.sendText(command, true); - return; + private continueTerminal: CapturedTerminal | undefined; + + async runCommand(command: string) { + if (!this.continueTerminal) { + this.continueTerminal = new CapturedTerminal("Continue"); } - const terminal = vscode.window.terminals[0]; - terminal.show(); - terminal.sendText(command, true); - // But need to know when it's done executing... + + this.continueTerminal.show(); + return await this.continueTerminal.runCommand(command); } } |