diff --git a/src/integrations/terminal/Terminal.ts b/src/integrations/terminal/Terminal.ts index e768d79397..531300aab9 100644 --- a/src/integrations/terminal/Terminal.ts +++ b/src/integrations/terminal/Terminal.ts @@ -11,6 +11,7 @@ export class Terminal { private streamClosed: boolean public process?: TerminalProcess public taskId?: string + public cmdCounter: number = 0 public completedProcesses: TerminalProcess[] = [] private initialCwd: string diff --git a/src/integrations/terminal/TerminalProcess.ts b/src/integrations/terminal/TerminalProcess.ts index c5e1c901b5..468bfebabb 100644 --- a/src/integrations/terminal/TerminalProcess.ts +++ b/src/integrations/terminal/TerminalProcess.ts @@ -276,7 +276,20 @@ export class TerminalProcess extends EventEmitter { }) // Execute command - terminal.shellIntegration.executeCommand(command) + const defaultWindowsShellProfile = vscode.workspace + .getConfiguration("terminal.integrated.defaultProfile") + .get("windows") + const isPowerShell = + process.platform === "win32" && + (defaultWindowsShellProfile === null || + (defaultWindowsShellProfile as string)?.toLowerCase().includes("powershell")) + if (isPowerShell) { + terminal.shellIntegration.executeCommand( + `${command} ; ${this.terminalInfo.cmdCounter++} > $null; start-sleep -milliseconds 150`, + ) + } else { + terminal.shellIntegration.executeCommand(command) + } this.isHot = true // Wait for stream to be available diff --git a/src/integrations/terminal/__tests__/TerminalProcess.test.ts b/src/integrations/terminal/__tests__/TerminalProcess.test.ts index 702166838e..82bfe23659 100644 --- a/src/integrations/terminal/__tests__/TerminalProcess.test.ts +++ b/src/integrations/terminal/__tests__/TerminalProcess.test.ts @@ -10,6 +10,11 @@ import { TerminalRegistry } from "../TerminalRegistry" const mockCreateTerminal = jest.fn() jest.mock("vscode", () => ({ + workspace: { + getConfiguration: jest.fn().mockReturnValue({ + get: jest.fn().mockReturnValue(null), + }), + }, window: { createTerminal: (...args: any[]) => { mockCreateTerminal(...args) diff --git a/src/integrations/terminal/__tests__/TerminalProcessExec.test.ts b/src/integrations/terminal/__tests__/TerminalProcessExec.test.ts index 4e4629e8db..65a6239aab 100644 --- a/src/integrations/terminal/__tests__/TerminalProcessExec.test.ts +++ b/src/integrations/terminal/__tests__/TerminalProcessExec.test.ts @@ -14,6 +14,11 @@ jest.mock("vscode", () => { } return { + workspace: { + getConfiguration: jest.fn().mockReturnValue({ + get: jest.fn().mockReturnValue(null), + }), + }, window: { createTerminal: jest.fn(), onDidStartTerminalShellExecution: jest.fn().mockImplementation((handler) => {