diff options
Diffstat (limited to 'extension/src/activation')
| -rw-r--r-- | extension/src/activation/activate.ts | 38 | 
1 files changed, 38 insertions, 0 deletions
| diff --git a/extension/src/activation/activate.ts b/extension/src/activation/activate.ts index 135a8ec7..32726c86 100644 --- a/extension/src/activation/activate.ts +++ b/extension/src/activation/activate.ts @@ -8,6 +8,7 @@ import * as path from "path";  import IdeProtocolClient from "../continueIdeClient";  import { getContinueServerUrl } from "../bridge";  import { setupDebugPanel, ContinueGUIWebviewViewProvider } from "../debugPanel"; +import { CapturedTerminal } from "../terminal/terminalEmulator";  export let extensionContext: vscode.ExtensionContext | undefined = undefined; @@ -47,5 +48,42 @@ export function activateExtension(      );    })(); +  // All opened terminals should be replaced by our own terminal +  vscode.window.onDidOpenTerminal((terminal) => { +    if (terminal.name === "Continue") { +      return; +    } +    const options = terminal.creationOptions; +    const capturedTerminal = new CapturedTerminal({ +      ...options, +      name: "Continue", +    }); +    terminal.dispose(); +    if (!ideProtocolClient.continueTerminal) { +      ideProtocolClient.continueTerminal = capturedTerminal; +    } +  }); + +  // If any terminals are open to start, replace them +  vscode.window.terminals.forEach((terminal) => { +    if (terminal.name === "Continue") { +      return; +    } +    const options = terminal.creationOptions; +    const capturedTerminal = new CapturedTerminal( +      { +        ...options, +        name: "Continue", +      }, +      (commandOutput: string) => { +        ideProtocolClient.sendCommandOutput(commandOutput); +      } +    ); +    terminal.dispose(); +    if (!ideProtocolClient.continueTerminal) { +      ideProtocolClient.continueTerminal = capturedTerminal; +    } +  }); +    extensionContext = context;  } | 
