From ee813f3d3ee2cd4eeb9fbb1bbd31f0a583ac7943 Mon Sep 17 00:00:00 2001 From: Megan Rogge Date: Fri, 3 Jun 2022 08:46:05 -0700 Subject: [PATCH] fix shell integration issues after clearing (#151223) --- .../contrib/terminal/browser/xterm/xtermTerminal.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.ts b/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.ts index 6e440b21969..fc510e1133d 100644 --- a/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.ts +++ b/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.ts @@ -32,7 +32,7 @@ import { Color } from 'vs/base/common/color'; import { ShellIntegrationAddon } from 'vs/platform/terminal/common/xterm/shellIntegrationAddon'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { DecorationAddon } from 'vs/workbench/contrib/terminal/browser/xterm/decorationAddon'; -import { ITerminalCapabilityStore, ITerminalCommand } from 'vs/platform/terminal/common/capabilities/capabilities'; +import { ITerminalCapabilityStore, ITerminalCommand, TerminalCapability } from 'vs/platform/terminal/common/capabilities/capabilities'; import { Emitter } from 'vs/base/common/event'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; @@ -396,8 +396,10 @@ export class XtermTerminal extends DisposableStore implements IXtermTerminal { clearBuffer(): void { this.raw.clear(); - // hack so that the next placeholder shows - this._decorationAddon?.registerCommandDecoration({ marker: this.raw.registerMarker(0), hasOutput: false, timestamp: Date.now(), getOutput: () => { return undefined; }, command: '' }, true); + // xterm.js does not clear the first prompt, so trigger these to simulate + // the prompt being written + this._capabilities.get(TerminalCapability.CommandDetection)?.handlePromptStart(); + this._capabilities.get(TerminalCapability.CommandDetection)?.handleCommandStart(); } private _setCursorBlink(blink: boolean): void {