Remove ProcessCapability

This commit is contained in:
Daniel Imms
2022-01-13 07:36:11 -08:00
parent dd18b2f094
commit 7f2580fa2e
13 changed files with 26 additions and 62 deletions
@@ -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<IProcessDataEvent | string>;
onProcessReady: Event<IProcessReadyEvent>;
onDidChangeProperty: Event<IProcessProperty<any>>;
@@ -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;
+3 -3
View File
@@ -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();
@@ -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<string>());
readonly onProcessData = this._onProcessData.event;
private readonly _onProcessReady = this._register(new Emitter<IProcessReadyEvent>());
@@ -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<ITerminalLaunchError | undefined> {
@@ -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 {
@@ -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<string>();
public readonly onProcessData: Event<string> = this._onProcessData.event;
private readonly _onProcessReady = new Emitter<IProcessReadyEvent>();
@@ -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: '' });
}
}
@@ -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<any>) {
@@ -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;
@@ -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);
@@ -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<string>());
readonly onProcessData: Event<string> = this._onProcessData.event;
private readonly _onProcessReady = this._register(new Emitter<IProcessReadyEvent>());
@@ -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<any>): void {
@@ -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');
@@ -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<IProcessDataEvent | string>());
readonly onProcessData = this._onProcessData.event;
private readonly _onProcessReplay = this._register(new Emitter<IPtyHostProcessReplayEvent>());
@@ -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<any>) {
@@ -22,7 +22,7 @@ import { TerminalCapabilityStore } from 'vs/workbench/contrib/terminal/common/ca
function createInstance(partial?: Partial<ITerminalInstance>): Pick<ITerminalInstance, 'shellLaunchConfig' | 'userHome' | 'cwd' | 'initialCwd' | 'processName' | 'sequence' | 'workspaceFolder' | 'staticTitle' | 'capabilities2' | 'title' | 'description'> {
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);
@@ -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<string | IProcessDataEvent>());
private titleEmitter = this._register(new Emitter<string>());
private readonly startedDeferred = new DeferredPromise<void>();
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<number | undefined>()).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<TerminalShellType>()).event;
public start(): Promise<ITerminalLaunchError | undefined> {
this.startedDeferred.complete();
this._onProcessReady.fire({ pid: -1, cwd: '', capabilities: [] });
this._onProcessReady.fire({ pid: -1, cwd: '' });
return Promise.resolve(undefined);
}
public shutdown(): void {