From 7f2580fa2ee290d1a87bf8ec0789f1bc2b7990f2 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Thu, 13 Jan 2022 07:36:11 -0800 Subject: [PATCH] Remove ProcessCapability --- src/vs/platform/terminal/common/terminal.ts | 11 ----------- src/vs/platform/terminal/node/ptyHostService.ts | 4 ++-- src/vs/platform/terminal/node/ptyService.ts | 6 +++--- src/vs/platform/terminal/node/terminalProcess.ts | 11 ++--------- src/vs/workbench/api/common/extHostTerminalService.ts | 7 +++---- .../workbench/contrib/terminal/browser/remotePty.ts | 6 +----- src/vs/workbench/contrib/terminal/browser/terminal.ts | 3 +-- .../contrib/terminal/browser/terminalInstance.ts | 9 ++------- .../terminal/browser/terminalProcessExtHostProxy.ts | 7 +++---- .../contrib/terminal/common/remoteTerminalChannel.ts | 6 +++--- .../contrib/terminal/electron-sandbox/localPty.ts | 5 +---- .../terminal/test/browser/terminalInstance.test.ts | 5 ++--- .../testing/browser/testingOutputTerminalService.ts | 8 +++----- 13 files changed, 26 insertions(+), 62 deletions(-) diff --git a/src/vs/platform/terminal/common/terminal.ts b/src/vs/platform/terminal/common/terminal.ts index 3b1ae69c9e4..8cf26d51026 100644 --- a/src/vs/platform/terminal/common/terminal.ts +++ b/src/vs/platform/terminal/common/terminal.ts @@ -551,15 +551,9 @@ export interface ITerminalLaunchError { export interface IProcessReadyEvent { pid: number, cwd: string, - capabilities: ProcessCapability[], requiresWindowsMode?: boolean } -export const enum ProcessCapability { - // TODO: Migrate this to use TerminalCapability.NaiveCwdDetection - CwdDetection = 'cwdDetection' -} - /** * Primarily driven by the shell integration feature, a terminal capability is the mechanism for * progressively enhancing various features that may not be supported in all terminals/shells. @@ -603,11 +597,6 @@ export interface ITerminalChildProcess { */ shouldPersist: boolean; - /** - * Capabilities of the process, designated when it starts - */ - capabilities: ProcessCapability[]; - onProcessData: Event; onProcessReady: Event; onDidChangeProperty: Event>; diff --git a/src/vs/platform/terminal/node/ptyHostService.ts b/src/vs/platform/terminal/node/ptyHostService.ts index f1cfde7032e..e64e1f5ec2e 100644 --- a/src/vs/platform/terminal/node/ptyHostService.ts +++ b/src/vs/platform/terminal/node/ptyHostService.ts @@ -17,7 +17,7 @@ import { ILogService } from 'vs/platform/log/common/log'; import { LogLevelChannelClient } from 'vs/platform/log/common/logIpc'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { RequestStore } from 'vs/platform/terminal/common/requestStore'; -import { HeartbeatConstants, IHeartbeatService, IProcessDataEvent, IPtyService, IReconnectConstants, IRequestResolveVariablesEvent, IShellLaunchConfig, ITerminalLaunchError, ITerminalProfile, ITerminalsLayoutInfo, TerminalIcon, TerminalIpcChannels, IProcessProperty, TitleEventSource, ProcessPropertyType, ProcessCapability, IProcessPropertyMap, TerminalSettingId, ISerializedTerminalState } from 'vs/platform/terminal/common/terminal'; +import { HeartbeatConstants, IHeartbeatService, IProcessDataEvent, IPtyService, IReconnectConstants, IRequestResolveVariablesEvent, IShellLaunchConfig, ITerminalLaunchError, ITerminalProfile, ITerminalsLayoutInfo, TerminalIcon, TerminalIpcChannels, IProcessProperty, TitleEventSource, ProcessPropertyType, IProcessPropertyMap, TerminalSettingId, ISerializedTerminalState } from 'vs/platform/terminal/common/terminal'; import { registerTerminalPlatformConfiguration } from 'vs/platform/terminal/common/terminalPlatformConfiguration'; import { IGetTerminalLayoutInfoArgs, IProcessDetails, IPtyHostProcessReplayEvent, ISetTerminalLayoutInfoArgs } from 'vs/platform/terminal/common/terminalProcess'; import { detectAvailableProfiles } from 'vs/platform/terminal/node/terminalProfiles'; @@ -64,7 +64,7 @@ export class PtyHostService extends Disposable implements IPtyService { private readonly _onProcessData = this._register(new Emitter<{ id: number, event: IProcessDataEvent | string }>()); readonly onProcessData = this._onProcessData.event; - private readonly _onProcessReady = this._register(new Emitter<{ id: number, event: { pid: number, cwd: string, capabilities: ProcessCapability[] } }>()); + private readonly _onProcessReady = this._register(new Emitter<{ id: number, event: { pid: number, cwd: string } }>()); readonly onProcessReady = this._onProcessReady.event; private readonly _onProcessReplay = this._register(new Emitter<{ id: number, event: IPtyHostProcessReplayEvent }>()); readonly onProcessReplay = this._onProcessReplay.event; diff --git a/src/vs/platform/terminal/node/ptyService.ts b/src/vs/platform/terminal/node/ptyService.ts index f879374cdb5..5dc03ce4503 100644 --- a/src/vs/platform/terminal/node/ptyService.ts +++ b/src/vs/platform/terminal/node/ptyService.ts @@ -12,7 +12,7 @@ import { URI } from 'vs/base/common/uri'; import { getSystemShell } from 'vs/base/node/shell'; import { ILogService } from 'vs/platform/log/common/log'; import { RequestStore } from 'vs/platform/terminal/common/requestStore'; -import { IProcessDataEvent, IProcessReadyEvent, IPtyService, IRawTerminalInstanceLayoutInfo, IReconnectConstants, IRequestResolveVariablesEvent, IShellLaunchConfig, ITerminalInstanceLayoutInfoById, ITerminalLaunchError, ITerminalsLayoutInfo, ITerminalTabLayoutInfoById, TerminalIcon, IProcessProperty, TitleEventSource, ProcessPropertyType, IProcessPropertyMap, IFixedTerminalDimensions, ProcessCapability, IPersistentTerminalProcessLaunchOptions, ICrossVersionSerializedTerminalState, ISerializedTerminalState } from 'vs/platform/terminal/common/terminal'; +import { IProcessDataEvent, IProcessReadyEvent, IPtyService, IRawTerminalInstanceLayoutInfo, IReconnectConstants, IRequestResolveVariablesEvent, IShellLaunchConfig, ITerminalInstanceLayoutInfoById, ITerminalLaunchError, ITerminalsLayoutInfo, ITerminalTabLayoutInfoById, TerminalIcon, IProcessProperty, TitleEventSource, ProcessPropertyType, IProcessPropertyMap, IFixedTerminalDimensions, IPersistentTerminalProcessLaunchOptions, ICrossVersionSerializedTerminalState, ISerializedTerminalState } from 'vs/platform/terminal/common/terminal'; import { TerminalDataBufferer } from 'vs/platform/terminal/common/terminalDataBuffering'; import { escapeNonWindowsPath } from 'vs/platform/terminal/common/terminalEnvironment'; import { Terminal as XtermTerminal } from 'xterm-headless'; @@ -46,7 +46,7 @@ export class PtyService extends Disposable implements IPtyService { readonly onProcessData = this._onProcessData.event; private readonly _onProcessReplay = this._register(new Emitter<{ id: number, event: IPtyHostProcessReplayEvent }>()); readonly onProcessReplay = this._onProcessReplay.event; - private readonly _onProcessReady = this._register(new Emitter<{ id: number, event: { pid: number, cwd: string, capabilities: ProcessCapability[] } }>()); + private readonly _onProcessReady = this._register(new Emitter<{ id: number, event: { pid: number, cwd: string } }>()); readonly onProcessReady = this._onProcessReady.event; private readonly _onProcessExit = this._register(new Emitter<{ id: number, event: number | undefined }>()); readonly onProcessExit = this._onProcessExit.event; @@ -588,7 +588,7 @@ export class PersistentTerminalProcess extends Disposable { this._onPersistentProcessReady.fire(); } } else { - this._onProcessReady.fire({ pid: this._pid, cwd: this._cwd, capabilities: this._terminalProcess.capabilities, requiresWindowsMode: isWindows && getWindowsBuildNumber() < 21376 }); + this._onProcessReady.fire({ pid: this._pid, cwd: this._cwd, requiresWindowsMode: isWindows && getWindowsBuildNumber() < 21376 }); this._onDidChangeProperty.fire({ type: ProcessPropertyType.Title, value: this._terminalProcess.currentTitle }); this._onDidChangeProperty.fire({ type: ProcessPropertyType.ShellType, value: this._terminalProcess.shellType }); this.triggerReplay(); diff --git a/src/vs/platform/terminal/node/terminalProcess.ts b/src/vs/platform/terminal/node/terminalProcess.ts index 822072e1759..8c37020f6b5 100644 --- a/src/vs/platform/terminal/node/terminalProcess.ts +++ b/src/vs/platform/terminal/node/terminalProcess.ts @@ -14,7 +14,7 @@ import { URI } from 'vs/base/common/uri'; import { Promises } from 'vs/base/node/pfs'; import { localize } from 'vs/nls'; import { ILogService } from 'vs/platform/log/common/log'; -import { FlowControlConstants, IShellLaunchConfig, ITerminalChildProcess, ITerminalLaunchError, IProcessProperty, IProcessPropertyMap as IProcessPropertyMap, ProcessPropertyType, TerminalShellType, ProcessCapability, IProcessReadyEvent } from 'vs/platform/terminal/common/terminal'; +import { FlowControlConstants, IShellLaunchConfig, ITerminalChildProcess, ITerminalLaunchError, IProcessProperty, IProcessPropertyMap as IProcessPropertyMap, ProcessPropertyType, TerminalShellType, IProcessReadyEvent } from 'vs/platform/terminal/common/terminal'; import { ChildProcessMonitor } from 'vs/platform/terminal/node/childProcessMonitor'; import { findExecutable, getWindowsBuildNumber } from 'vs/platform/terminal/node/terminalEnvironment'; import { WindowsShellHelper } from 'vs/platform/terminal/node/windowsShellHelper'; @@ -102,7 +102,6 @@ export class TerminalProcess extends Disposable implements ITerminalChildProcess private _delayedResizer: DelayedResizer | undefined; private readonly _initialCwd: string; private readonly _ptyOptions: pty.IPtyForkOptions | pty.IWindowsPtyForkOptions; - private _capabilities: ProcessCapability[] = []; private _isPtyPaused: boolean = false; private _unacknowledgedCharCount: number = 0; @@ -111,8 +110,6 @@ export class TerminalProcess extends Disposable implements ITerminalChildProcess get currentTitle(): string { return this._windowsShellHelper?.shellTitle || this._currentTitle; } get shellType(): TerminalShellType { return this._windowsShellHelper ? this._windowsShellHelper.shellType : undefined; } - get capabilities(): ProcessCapability[] { return this._capabilities; } - private readonly _onProcessData = this._register(new Emitter()); readonly onProcessData = this._onProcessData.event; private readonly _onProcessReady = this._register(new Emitter()); @@ -178,10 +175,6 @@ export class TerminalProcess extends Disposable implements ITerminalChildProcess this._register(this._windowsShellHelper.onShellNameChanged(e => this._onDidChangeProperty.fire({ type: ProcessPropertyType.Title, value: e }))); }); } - // Enable the cwd detection capability if the process supports it - if (isLinux || isMacintosh) { - this.capabilities.push(ProcessCapability.CwdDetection); - } } async start(): Promise { @@ -348,7 +341,7 @@ export class TerminalProcess extends Disposable implements ITerminalChildProcess } private _sendProcessId(pid: number) { - this._onProcessReady.fire({ pid, cwd: this._initialCwd, capabilities: this.capabilities, requiresWindowsMode: isWindows && getWindowsBuildNumber() < 21376 }); + this._onProcessReady.fire({ pid, cwd: this._initialCwd, requiresWindowsMode: isWindows && getWindowsBuildNumber() < 21376 }); } private _sendProcessTitle(ptyProcess: pty.IPty): void { diff --git a/src/vs/workbench/api/common/extHostTerminalService.ts b/src/vs/workbench/api/common/extHostTerminalService.ts index d527f1eba1b..681e3d3ce9a 100644 --- a/src/vs/workbench/api/common/extHostTerminalService.ts +++ b/src/vs/workbench/api/common/extHostTerminalService.ts @@ -18,7 +18,7 @@ import { serializeEnvironmentVariableCollection } from 'vs/workbench/contrib/ter import { CancellationTokenSource } from 'vs/base/common/cancellation'; import { generateUuid } from 'vs/base/common/uuid'; import { ISerializableEnvironmentVariableCollection } from 'vs/workbench/contrib/terminal/common/environmentVariable'; -import { ICreateContributedTerminalProfileOptions, IProcessReadyEvent, IShellLaunchConfigDto, ITerminalChildProcess, ITerminalLaunchError, ITerminalProfile, TerminalIcon, TerminalLocation, IProcessProperty, ProcessPropertyType, ProcessCapability, IProcessPropertyMap } from 'vs/platform/terminal/common/terminal'; +import { ICreateContributedTerminalProfileOptions, IProcessReadyEvent, IShellLaunchConfigDto, ITerminalChildProcess, ITerminalLaunchError, ITerminalProfile, TerminalIcon, TerminalLocation, IProcessProperty, ProcessPropertyType, IProcessPropertyMap } from 'vs/platform/terminal/common/terminal'; import { TerminalDataBufferer } from 'vs/platform/terminal/common/terminalDataBuffering'; import { ThemeColor } from 'vs/platform/theme/common/themeService'; import { withNullAsUndefined } from 'vs/base/common/types'; @@ -247,8 +247,7 @@ export class ExtHostTerminal { export class ExtHostPseudoterminal implements ITerminalChildProcess { readonly id = 0; readonly shouldPersist = false; - private _capabilities: ProcessCapability[] = []; - get capabilities(): ProcessCapability[] { return this._capabilities; } + private readonly _onProcessData = new Emitter(); public readonly onProcessData: Event = this._onProcessData.event; private readonly _onProcessReady = new Emitter(); @@ -330,7 +329,7 @@ export class ExtHostPseudoterminal implements ITerminalChildProcess { this._pty.setDimensions?.(initialDimensions); } - this._onProcessReady.fire({ pid: -1, cwd: '', capabilities: this._capabilities }); + this._onProcessReady.fire({ pid: -1, cwd: '' }); } } diff --git a/src/vs/workbench/contrib/terminal/browser/remotePty.ts b/src/vs/workbench/contrib/terminal/browser/remotePty.ts index 1f5a709a941..62b17bf8ea8 100644 --- a/src/vs/workbench/contrib/terminal/browser/remotePty.ts +++ b/src/vs/workbench/contrib/terminal/browser/remotePty.ts @@ -8,7 +8,7 @@ import { Emitter } from 'vs/base/common/event'; import { Disposable } from 'vs/base/common/lifecycle'; import { URI } from 'vs/base/common/uri'; import { ILogService } from 'vs/platform/log/common/log'; -import { IProcessDataEvent, ITerminalChildProcess, ITerminalLaunchError, IProcessProperty, IProcessPropertyMap, ProcessPropertyType, ProcessCapability, IProcessReadyEvent } from 'vs/platform/terminal/common/terminal'; +import { IProcessDataEvent, ITerminalChildProcess, ITerminalLaunchError, IProcessProperty, IProcessPropertyMap, ProcessPropertyType, IProcessReadyEvent } from 'vs/platform/terminal/common/terminal'; import { IPtyHostProcessReplayEvent } from 'vs/platform/terminal/common/terminalProcess'; import { RemoteTerminalChannelClient } from 'vs/workbench/contrib/terminal/common/remoteTerminalChannel'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; @@ -38,9 +38,6 @@ export class RemotePty extends Disposable implements ITerminalChildProcess { overrideDimensions: undefined }; - private _capabilities: ProcessCapability[] = []; - get capabilities(): ProcessCapability[] { return this._capabilities; } - get id(): number { return this._id; } constructor( @@ -147,7 +144,6 @@ export class RemotePty extends Disposable implements ITerminalChildProcess { return this._remoteTerminalChannel.processBinary(this._id, e); } handleReady(e: IProcessReadyEvent) { - this._capabilities = e.capabilities; this._onProcessReady.fire(e); } handleDidChangeProperty({ type, value }: IProcessProperty) { diff --git a/src/vs/workbench/contrib/terminal/browser/terminal.ts b/src/vs/workbench/contrib/terminal/browser/terminal.ts index eb4e69ff550..19a4291c7a8 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminal.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminal.ts @@ -8,7 +8,7 @@ import { IDisposable } from 'vs/base/common/lifecycle'; import { URI } from 'vs/base/common/uri'; import { FindReplaceState } from 'vs/editor/contrib/find/findState'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; -import { IShellLaunchConfig, ITerminalDimensions, ITerminalLaunchError, ITerminalProfile, ITerminalTabLayoutInfoById, TerminalIcon, TitleEventSource, TerminalShellType, IExtensionTerminalProfile, TerminalLocation, ProcessPropertyType, ProcessCapability, IProcessPropertyMap } from 'vs/platform/terminal/common/terminal'; +import { IShellLaunchConfig, ITerminalDimensions, ITerminalLaunchError, ITerminalProfile, ITerminalTabLayoutInfoById, TerminalIcon, TitleEventSource, TerminalShellType, IExtensionTerminalProfile, TerminalLocation, ProcessPropertyType, IProcessPropertyMap } from 'vs/platform/terminal/common/terminal'; import { ICommandTracker, INavigationMode, IRemoteTerminalAttachTarget, IStartExtensionTerminalRequest, ITerminalConfigHelper, ITerminalFont, ITerminalBackend, ITerminalProcessExtHostProxy, IRegisterContributedProfileArgs, IShellIntegration, ITerminalCapabilityStore } from 'vs/workbench/contrib/terminal/common/terminal'; import { ITerminalStatusList } from 'vs/workbench/contrib/terminal/browser/terminalStatusList'; import { Orientation } from 'vs/base/browser/ui/splitview/splitview'; @@ -408,7 +408,6 @@ export interface ITerminalInstance { readonly workspaceFolder?: string; readonly cwd?: string; readonly initialCwd?: string; - readonly capabilities: ProcessCapability[]; readonly capabilities2: ITerminalCapabilityStore; readonly statusList: ITerminalStatusList; diff --git a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts index 16605b2786e..2eb1b3dbe17 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts @@ -38,7 +38,7 @@ import { TypeAheadAddon } from 'vs/workbench/contrib/terminal/browser/terminalTy import { BrowserFeatures } from 'vs/base/browser/canIUse'; import { IPreferencesService } from 'vs/workbench/services/preferences/common/preferences'; import { IEnvironmentVariableInfo } from 'vs/workbench/contrib/terminal/common/environmentVariable'; -import { IProcessDataEvent, IShellLaunchConfig, ITerminalDimensionsOverride, ITerminalLaunchError, TerminalShellType, TerminalSettingId, TitleEventSource, TerminalIcon, TerminalLocation, ProcessPropertyType, ProcessCapability, IProcessPropertyMap, WindowsShellType, TerminalCommand, TerminalCapability } from 'vs/platform/terminal/common/terminal'; +import { IProcessDataEvent, IShellLaunchConfig, ITerminalDimensionsOverride, ITerminalLaunchError, TerminalShellType, TerminalSettingId, TitleEventSource, TerminalIcon, TerminalLocation, ProcessPropertyType, IProcessPropertyMap, WindowsShellType, TerminalCommand, TerminalCapability } from 'vs/platform/terminal/common/terminal'; import { IProductService } from 'vs/platform/product/common/productService'; import { formatMessageForTerminal } from 'vs/workbench/contrib/terminal/common/terminalStrings'; import { AutoOpenBarrier, Promises } from 'vs/base/common/async'; @@ -180,8 +180,6 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { readonly statusList: ITerminalStatusList; disableLayout: boolean = false; - // TODO: Replace with capabilities2 - private _capabilities: ProcessCapability[] = []; private _description?: string; private _processName: string = ''; private _sequence?: string; @@ -260,7 +258,6 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { get workspaceFolder(): string | undefined { return this._workspaceFolder; } get cwd(): string | undefined { return this._cwd; } get initialCwd(): string | undefined { return this._initialCwd; } - get capabilities(): ProcessCapability[] { return this._capabilities; } get description(): string | undefined { return this._description || this.shellLaunchConfig.description; } get userHome(): string | undefined { return this._userHome; } // The onExit event is special in that it fires and is disposed after the terminal instance @@ -940,7 +937,6 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { this._widgetManager.attachToElement(xterm.raw.element); this._processManager.onProcessReady((e) => { this._linkManager?.setWidgetManager(this._widgetManager); - this._capabilities = e.capabilities; this._workspaceFolder = path.basename(e.cwd.toString()); }); @@ -1182,7 +1178,6 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { processManager.onProcessReady(async (e) => { this._onProcessIdReady.fire(this); this._initialCwd = await this.getInitialCwd(); - this._capabilities = e.capabilities; // Set the initial name based on the _resolved_ shell launch config, this will also // ensure the resolved icon gets shown if (!this._labelComputer) { @@ -2238,7 +2233,7 @@ export class TerminalLabelComputer extends Disposable { if (!reset && this._instance.staticTitle && labelType === TerminalLabelType.Title) { return this._instance.staticTitle.replace(/[\n\r\t]/g, '') || templateProperties.process?.replace(/[\n\r\t]/g, '') || ''; } - const detection = this._instance.capabilities2.has(TerminalCapability.CwdDetection); + const detection = this._instance.capabilities2.has(TerminalCapability.CwdDetection) || this._instance.capabilities2.has(TerminalCapability.NaiveCwdDetection); const zeroRootWorkspace = this._workspaceContextService.getWorkspace().folders.length === 0 && this.pathsEqual(templateProperties.cwd, this._instance.userHome || this._configHelper.config.cwd); const singleRootWorkspace = this._workspaceContextService.getWorkspace().folders.length === 1 && this.pathsEqual(templateProperties.cwd, this._configHelper.config.cwd || this._workspaceContextService.getWorkspace().folders[0]?.uri.fsPath); templateProperties.cwdFolder = (!templateProperties.cwd || !detection || zeroRootWorkspace || singleRootWorkspace) ? '' : path.basename(templateProperties.cwd); diff --git a/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts b/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts index 2d3911a584f..06a6f3f4d70 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts @@ -5,15 +5,14 @@ import { Emitter, Event } from 'vs/base/common/event'; import { Disposable } from 'vs/base/common/lifecycle'; -import { IProcessReadyEvent, IShellLaunchConfig, ITerminalChildProcess, ITerminalDimensions, ITerminalLaunchError, IProcessProperty, ProcessPropertyType, ProcessCapability, IProcessPropertyMap } from 'vs/platform/terminal/common/terminal'; +import { IProcessReadyEvent, IShellLaunchConfig, ITerminalChildProcess, ITerminalDimensions, ITerminalLaunchError, IProcessProperty, ProcessPropertyType, IProcessPropertyMap } from 'vs/platform/terminal/common/terminal'; import { ITerminalService } from 'vs/workbench/contrib/terminal/browser/terminal'; import { ITerminalProcessExtHostProxy } from 'vs/workbench/contrib/terminal/common/terminal'; export class TerminalProcessExtHostProxy extends Disposable implements ITerminalChildProcess, ITerminalProcessExtHostProxy { readonly id = 0; readonly shouldPersist = false; - private _capabilities: ProcessCapability[] = []; - get capabilities(): ProcessCapability[] { return this._capabilities; } + private readonly _onProcessData = this._register(new Emitter()); readonly onProcessData: Event = this._onProcessData.event; private readonly _onProcessReady = this._register(new Emitter()); @@ -65,7 +64,7 @@ export class TerminalProcessExtHostProxy extends Disposable implements ITerminal } emitReady(pid: number, cwd: string): void { - this._onProcessReady.fire({ pid, cwd, capabilities: this.capabilities }); + this._onProcessReady.fire({ pid, cwd }); } emitProcessProperty({ type, value }: IProcessProperty): void { diff --git a/src/vs/workbench/contrib/terminal/common/remoteTerminalChannel.ts b/src/vs/workbench/contrib/terminal/common/remoteTerminalChannel.ts index fbb42599d38..86d40c55095 100644 --- a/src/vs/workbench/contrib/terminal/common/remoteTerminalChannel.ts +++ b/src/vs/workbench/contrib/terminal/common/remoteTerminalChannel.ts @@ -18,7 +18,7 @@ import { IEditorService } from 'vs/workbench/services/editor/common/editorServic import { Schemas } from 'vs/base/common/network'; import { ILabelService } from 'vs/platform/label/common/label'; import { IEnvironmentVariableService, ISerializableEnvironmentVariableCollection } from 'vs/workbench/contrib/terminal/common/environmentVariable'; -import { IProcessDataEvent, IRequestResolveVariablesEvent, IShellLaunchConfigDto, ITerminalLaunchError, ITerminalProfile, ITerminalsLayoutInfo, ITerminalsLayoutInfoById, TerminalIcon, IProcessProperty, ProcessPropertyType, ProcessCapability, IProcessPropertyMap, TitleEventSource, ISerializedTerminalState, IPtyHostController } from 'vs/platform/terminal/common/terminal'; +import { IProcessDataEvent, IRequestResolveVariablesEvent, IShellLaunchConfigDto, ITerminalLaunchError, ITerminalProfile, ITerminalsLayoutInfo, ITerminalsLayoutInfoById, TerminalIcon, IProcessProperty, ProcessPropertyType, IProcessPropertyMap, TitleEventSource, ISerializedTerminalState, IPtyHostController } from 'vs/platform/terminal/common/terminal'; import { IGetTerminalLayoutInfoArgs, IProcessDetails, IPtyHostProcessReplayEvent, ISetTerminalLayoutInfoArgs } from 'vs/platform/terminal/common/terminalProcess'; import { IProcessEnvironment, OperatingSystem } from 'vs/base/common/platform'; import { ICompleteTerminalConfiguration } from 'vs/workbench/contrib/terminal/common/terminal'; @@ -78,8 +78,8 @@ export class RemoteTerminalChannelClient implements IPtyHostController { get onProcessExit(): Event<{ id: number, event: number | undefined }> { return this._channel.listen<{ id: number, event: number | undefined }>('$onProcessExitEvent'); } - get onProcessReady(): Event<{ id: number, event: { pid: number, cwd: string, capabilities: ProcessCapability[], requireWindowsMode?: boolean } }> { - return this._channel.listen<{ id: number, event: { pid: number, cwd: string, capabilities: ProcessCapability[], requiresWindowsMode?: boolean } }>('$onProcessReadyEvent'); + get onProcessReady(): Event<{ id: number, event: { pid: number, cwd: string, requireWindowsMode?: boolean } }> { + return this._channel.listen<{ id: number, event: { pid: number, cwd: string, requiresWindowsMode?: boolean } }>('$onProcessReadyEvent'); } get onProcessReplay(): Event<{ id: number, event: IPtyHostProcessReplayEvent }> { return this._channel.listen<{ id: number, event: IPtyHostProcessReplayEvent }>('$onProcessReplayEvent'); diff --git a/src/vs/workbench/contrib/terminal/electron-sandbox/localPty.ts b/src/vs/workbench/contrib/terminal/electron-sandbox/localPty.ts index 84a3f8b1fb5..689d383539d 100644 --- a/src/vs/workbench/contrib/terminal/electron-sandbox/localPty.ts +++ b/src/vs/workbench/contrib/terminal/electron-sandbox/localPty.ts @@ -6,7 +6,7 @@ import { Emitter } from 'vs/base/common/event'; import { Disposable } from 'vs/base/common/lifecycle'; import { ILocalPtyService } from 'vs/platform/terminal/electron-sandbox/terminal'; -import { IProcessDataEvent, ITerminalChildProcess, ITerminalLaunchError, IProcessProperty, IProcessPropertyMap, ProcessPropertyType, ProcessCapability, IProcessReadyEvent } from 'vs/platform/terminal/common/terminal'; +import { IProcessDataEvent, ITerminalChildProcess, ITerminalLaunchError, IProcessProperty, IProcessPropertyMap, ProcessPropertyType, IProcessReadyEvent } from 'vs/platform/terminal/common/terminal'; import { IPtyHostProcessReplayEvent } from 'vs/platform/terminal/common/terminalProcess'; import { URI } from 'vs/base/common/uri'; @@ -26,8 +26,6 @@ export class LocalPty extends Disposable implements ITerminalChildProcess { resolvedShellLaunchConfig: {}, overrideDimensions: undefined }; - private _capabilities: ProcessCapability[] = []; - get capabilities(): ProcessCapability[] { return this._capabilities; } private readonly _onProcessData = this._register(new Emitter()); readonly onProcessData = this._onProcessData.event; private readonly _onProcessReplay = this._register(new Emitter()); @@ -107,7 +105,6 @@ export class LocalPty extends Disposable implements ITerminalChildProcess { this._onProcessExit.fire(e); } handleReady(e: IProcessReadyEvent) { - this._capabilities = e.capabilities; this._onProcessReady.fire(e); } handleDidChangeProperty({ type, value }: IProcessProperty) { diff --git a/src/vs/workbench/contrib/terminal/test/browser/terminalInstance.test.ts b/src/vs/workbench/contrib/terminal/test/browser/terminalInstance.test.ts index 81dfa5b7fa3..f6910d2e594 100644 --- a/src/vs/workbench/contrib/terminal/test/browser/terminalInstance.test.ts +++ b/src/vs/workbench/contrib/terminal/test/browser/terminalInstance.test.ts @@ -22,7 +22,7 @@ import { TerminalCapabilityStore } from 'vs/workbench/contrib/terminal/common/ca function createInstance(partial?: Partial): Pick { const capabilities2 = new TerminalCapabilityStore(); if (!isWindows) { - capabilities2.addCapability(TerminalCapability.CwdDetection); + capabilities2.addCapability(TerminalCapability.NaiveCwdDetection); } return { shellLaunchConfig: {}, @@ -169,8 +169,7 @@ suite('Workbench - TerminalInstance', () => { instantiationService.stub(IWorkspaceContextService, new TestContextService()); capabilities2 = new TerminalCapabilityStore(); if (!isWindows) { - // TODO: Replace all these with Naive - capabilities2.addCapability(TerminalCapability.CwdDetection); + capabilities2.addCapability(TerminalCapability.NaiveCwdDetection); } const ROOT_1_URI = getUri(ROOT_1); diff --git a/src/vs/workbench/contrib/testing/browser/testingOutputTerminalService.ts b/src/vs/workbench/contrib/testing/browser/testingOutputTerminalService.ts index cfe41da20b7..ebc63725a52 100644 --- a/src/vs/workbench/contrib/testing/browser/testingOutputTerminalService.ts +++ b/src/vs/workbench/contrib/testing/browser/testingOutputTerminalService.ts @@ -10,7 +10,7 @@ import { listenStream } from 'vs/base/common/stream'; import { isDefined } from 'vs/base/common/types'; import { localize } from 'vs/nls'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; -import { IProcessDataEvent, IProcessPropertyMap, IShellLaunchConfig, ITerminalChildProcess, ITerminalDimensionsOverride, ITerminalLaunchError, ProcessCapability, ProcessPropertyType, TerminalLocation, TerminalShellType } from 'vs/platform/terminal/common/terminal'; +import { IProcessDataEvent, IProcessPropertyMap, IShellLaunchConfig, ITerminalChildProcess, ITerminalDimensionsOverride, ITerminalLaunchError, ProcessPropertyType, TerminalLocation, TerminalShellType } from 'vs/platform/terminal/common/terminal'; import { IViewsService } from 'vs/workbench/common/views'; import { ITerminalEditorService, ITerminalGroupService, ITerminalInstance, ITerminalService } from 'vs/workbench/contrib/terminal/browser/terminal'; import { TERMINAL_VIEW_ID } from 'vs/workbench/contrib/terminal/common/terminal'; @@ -164,8 +164,6 @@ class TestOutputProcess extends Disposable implements ITerminalChildProcess { private processDataEmitter = this._register(new Emitter()); private titleEmitter = this._register(new Emitter()); private readonly startedDeferred = new DeferredPromise(); - private _capabilities: ProcessCapability[] = []; - get capabilities(): ProcessCapability[] { return this._capabilities; } /** Whether the associated test has ended (indicating the terminal can be reused) */ public ended = true; /** Result currently being displayed */ @@ -193,14 +191,14 @@ class TestOutputProcess extends Disposable implements ITerminalChildProcess { public readonly onProcessData = this.processDataEmitter.event; public readonly onProcessExit = this._register(new Emitter()).event; - private readonly _onProcessReady = this._register(new Emitter<{ pid: number; cwd: string; capabilities: ProcessCapability[] }>()); + private readonly _onProcessReady = this._register(new Emitter<{ pid: number; cwd: string }>()); public readonly onProcessReady = this._onProcessReady.event; public readonly onProcessTitleChanged = this.titleEmitter.event; public readonly onProcessShellTypeChanged = this._register(new Emitter()).event; public start(): Promise { this.startedDeferred.complete(); - this._onProcessReady.fire({ pid: -1, cwd: '', capabilities: [] }); + this._onProcessReady.fire({ pid: -1, cwd: '' }); return Promise.resolve(undefined); } public shutdown(): void {