summaryrefslogtreecommitdiff
path: root/extension/src/continueIdeClient.ts
diff options
context:
space:
mode:
Diffstat (limited to 'extension/src/continueIdeClient.ts')
-rw-r--r--extension/src/continueIdeClient.ts24
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);
}
}