Update xterm and adopt windowsPty

Fixes #134448
This commit is contained in:
Daniel Imms 2023-06-07 12:41:50 -07:00
parent 4874dc69a0
commit b28ef2d2e1
No known key found for this signature in database
GPG key ID: 7116259D505CA628
19 changed files with 129 additions and 109 deletions

View file

@ -87,14 +87,14 @@
"vscode-oniguruma": "1.7.0",
"vscode-regexpp": "^3.1.0",
"vscode-textmate": "9.0.0",
"xterm": "5.2.0-beta.49",
"xterm-addon-canvas": "0.4.0-beta.14",
"xterm": "5.2.0-beta.53",
"xterm-addon-canvas": "0.4.0-beta.15",
"xterm-addon-image": "0.4.0",
"xterm-addon-search": "0.12.0-beta.5",
"xterm-addon-serialize": "0.10.0-beta.2",
"xterm-addon-search": "0.12.0-beta.6",
"xterm-addon-serialize": "0.10.0-beta.3",
"xterm-addon-unicode11": "0.5.0",
"xterm-addon-webgl": "0.15.0-beta.15",
"xterm-headless": "5.2.0-beta.49",
"xterm-addon-webgl": "0.15.0-beta.16",
"xterm-headless": "5.2.0-beta.53",
"yauzl": "^2.9.2",
"yazl": "^2.4.3"
},

View file

@ -24,14 +24,14 @@
"vscode-oniguruma": "1.7.0",
"vscode-regexpp": "^3.1.0",
"vscode-textmate": "9.0.0",
"xterm": "5.2.0-beta.49",
"xterm-addon-canvas": "0.4.0-beta.14",
"xterm": "5.2.0-beta.53",
"xterm-addon-canvas": "0.4.0-beta.15",
"xterm-addon-image": "0.4.0",
"xterm-addon-search": "0.12.0-beta.5",
"xterm-addon-serialize": "0.10.0-beta.2",
"xterm-addon-search": "0.12.0-beta.6",
"xterm-addon-serialize": "0.10.0-beta.3",
"xterm-addon-unicode11": "0.5.0",
"xterm-addon-webgl": "0.15.0-beta.15",
"xterm-headless": "5.2.0-beta.49",
"xterm-addon-webgl": "0.15.0-beta.16",
"xterm-headless": "5.2.0-beta.53",
"yauzl": "^2.9.2",
"yazl": "^2.4.3"
},

View file

@ -11,11 +11,11 @@
"tas-client-umd": "0.1.8",
"vscode-oniguruma": "1.7.0",
"vscode-textmate": "9.0.0",
"xterm": "5.2.0-beta.49",
"xterm-addon-canvas": "0.4.0-beta.14",
"xterm": "5.2.0-beta.53",
"xterm-addon-canvas": "0.4.0-beta.15",
"xterm-addon-image": "0.4.0",
"xterm-addon-search": "0.12.0-beta.5",
"xterm-addon-search": "0.12.0-beta.6",
"xterm-addon-unicode11": "0.5.0",
"xterm-addon-webgl": "0.15.0-beta.15"
"xterm-addon-webgl": "0.15.0-beta.16"
}
}

View file

@ -68,32 +68,32 @@ vscode-textmate@9.0.0:
resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-9.0.0.tgz#313c6c8792b0507aef35aeb81b6b370b37c44d6c"
integrity sha512-Cl65diFGxz7gpwbav10HqiY/eVYTO1sjQpmRmV991Bj7wAoOAjGQ97PpQcXorDE2Uc4hnGWLY17xme+5t6MlSg==
xterm-addon-canvas@0.4.0-beta.14:
version "0.4.0-beta.14"
resolved "https://registry.yarnpkg.com/xterm-addon-canvas/-/xterm-addon-canvas-0.4.0-beta.14.tgz#ed8b5d2a839608ae5c9c73d1fa11f6ffb5f92be7"
integrity sha512-FBlHGuSjQMuujwOBhuoOO16iLHgeQ9ucOApsTS+Hf0ZpOnFVQX3JQDYAWlxRIpfDa/HiEGYPhAgFjqqFMtXL4Q==
xterm-addon-canvas@0.4.0-beta.15:
version "0.4.0-beta.15"
resolved "https://registry.yarnpkg.com/xterm-addon-canvas/-/xterm-addon-canvas-0.4.0-beta.15.tgz#8e181ec587c9b339619d363f80becb8db48435e3"
integrity sha512-fNwkh5locfVgXn+t9tmtKYaGJaemykPc3fu+RVhrbMrAJTYIM0rIXLypB8VKgeDGhkiOwXQaf7xwU2LpcCIZNw==
xterm-addon-image@0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/xterm-addon-image/-/xterm-addon-image-0.4.0.tgz#36e98fa892db11755a5f6e9654f924e876e29bf8"
integrity sha512-3wumCJo4WTzxvecSMxJ7XtpVQeFe4gE2cdHCyUdo7zagVkS18YXJacGx6DjlAIccdJn6/LhGuD99xOSSvYx9Gw==
xterm-addon-search@0.12.0-beta.5:
version "0.12.0-beta.5"
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.12.0-beta.5.tgz#36bae02306a54837b86beebbf4ac1b9b19a0d567"
integrity sha512-ci3SMkjyGR+C9bRaeQerLY8WneJY6oeI/YLkM80ZgH4C3ViuD2foZav2AbcW5I7uwaHz3CFjlKAY6Nf00TRG8g==
xterm-addon-search@0.12.0-beta.6:
version "0.12.0-beta.6"
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.12.0-beta.6.tgz#1c9afb69cca586a94e8965712387ee210ccd8d64"
integrity sha512-DJSDhdm7zqgUBGs4oq/yBvBxTgos3DaBveBx8j+KYRPPeHmfLa8mex1rC5iYTxsk80uzVny5VQgMrpMgAfZQyg==
xterm-addon-unicode11@0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.5.0.tgz#41c0d96acc1e3bb6c6596eee64e163b6bca74be7"
integrity sha512-Jm4/g4QiTxiKiTbYICQgC791ubhIZyoIwxAIgOW8z8HWFNY+lwk+dwaKEaEeGBfM48Vk8fklsUW9u/PlenYEBg==
xterm-addon-webgl@0.15.0-beta.15:
version "0.15.0-beta.15"
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.15.0-beta.15.tgz#bc9422425c27ebd86059f6b2465f01c5ec07071a"
integrity sha512-0zFn6Fsvo7jbSWO2TwNUHlAoceWWb2EYI/SgxN+H6+4kpUV1clP53pTQBdUpAtPEjJsVgxERqOPKBFu14TnR0w==
xterm-addon-webgl@0.15.0-beta.16:
version "0.15.0-beta.16"
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.15.0-beta.16.tgz#69ae1e3743737913007569e33ad58f4660fadddd"
integrity sha512-T08dObBpZhOh8LtqG9nV94yY9x7ONhnHMggTDUXzJvZ3SfrzgoDSDMKF84KhZsCtZShhJyQxR6+RNWX1nJZ8eA==
xterm@5.2.0-beta.49:
version "5.2.0-beta.49"
resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.2.0-beta.49.tgz#0c9c176862019800172fc016d136300d1b6531ce"
integrity sha512-kfdiYljgAmjM9VpkNuuDcUJJHB62UiSTVZRYJbQdOU7jCi9mnUTPWov+5PnZIgONGts3t3Dv5kdbNF4UH53uTA==
xterm@5.2.0-beta.53:
version "5.2.0-beta.53"
resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.2.0-beta.53.tgz#4a9b618b675f5b6b860a7205c8ff0dfba0879ccd"
integrity sha512-REM8Jhffs23MqzF3MxdeODB8cr3ewqULN9Tl9jJdKQOpXBnLXcUKAeGeRVuFyeZYSoXH7fJicX1EJcsW8rPvZw==

View file

@ -836,45 +836,45 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
xterm-addon-canvas@0.4.0-beta.14:
version "0.4.0-beta.14"
resolved "https://registry.yarnpkg.com/xterm-addon-canvas/-/xterm-addon-canvas-0.4.0-beta.14.tgz#ed8b5d2a839608ae5c9c73d1fa11f6ffb5f92be7"
integrity sha512-FBlHGuSjQMuujwOBhuoOO16iLHgeQ9ucOApsTS+Hf0ZpOnFVQX3JQDYAWlxRIpfDa/HiEGYPhAgFjqqFMtXL4Q==
xterm-addon-canvas@0.4.0-beta.15:
version "0.4.0-beta.15"
resolved "https://registry.yarnpkg.com/xterm-addon-canvas/-/xterm-addon-canvas-0.4.0-beta.15.tgz#8e181ec587c9b339619d363f80becb8db48435e3"
integrity sha512-fNwkh5locfVgXn+t9tmtKYaGJaemykPc3fu+RVhrbMrAJTYIM0rIXLypB8VKgeDGhkiOwXQaf7xwU2LpcCIZNw==
xterm-addon-image@0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/xterm-addon-image/-/xterm-addon-image-0.4.0.tgz#36e98fa892db11755a5f6e9654f924e876e29bf8"
integrity sha512-3wumCJo4WTzxvecSMxJ7XtpVQeFe4gE2cdHCyUdo7zagVkS18YXJacGx6DjlAIccdJn6/LhGuD99xOSSvYx9Gw==
xterm-addon-search@0.12.0-beta.5:
version "0.12.0-beta.5"
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.12.0-beta.5.tgz#36bae02306a54837b86beebbf4ac1b9b19a0d567"
integrity sha512-ci3SMkjyGR+C9bRaeQerLY8WneJY6oeI/YLkM80ZgH4C3ViuD2foZav2AbcW5I7uwaHz3CFjlKAY6Nf00TRG8g==
xterm-addon-search@0.12.0-beta.6:
version "0.12.0-beta.6"
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.12.0-beta.6.tgz#1c9afb69cca586a94e8965712387ee210ccd8d64"
integrity sha512-DJSDhdm7zqgUBGs4oq/yBvBxTgos3DaBveBx8j+KYRPPeHmfLa8mex1rC5iYTxsk80uzVny5VQgMrpMgAfZQyg==
xterm-addon-serialize@0.10.0-beta.2:
version "0.10.0-beta.2"
resolved "https://registry.yarnpkg.com/xterm-addon-serialize/-/xterm-addon-serialize-0.10.0-beta.2.tgz#331a5f54ab1380e4d5fcde7f03ac28b138efa803"
integrity sha512-cCUoWGTFcBT4kDNhUP/Lohl5hJStEtxprJErYdhvT8lorPhA+zai6Sv0sT3A5Je5nmG2rSrS9hPZUj6kmPjGvw==
xterm-addon-serialize@0.10.0-beta.3:
version "0.10.0-beta.3"
resolved "https://registry.yarnpkg.com/xterm-addon-serialize/-/xterm-addon-serialize-0.10.0-beta.3.tgz#3fd186421a26c1ebcf448c699103f840d97db049"
integrity sha512-nlnOS+5If/VOlekRh7rJmuO7bkpzyZd56p0JijQRp8KUrwPrlGFn0AEUcy8291d9L6A1RTCDU+E4YiRobAPoVA==
xterm-addon-unicode11@0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.5.0.tgz#41c0d96acc1e3bb6c6596eee64e163b6bca74be7"
integrity sha512-Jm4/g4QiTxiKiTbYICQgC791ubhIZyoIwxAIgOW8z8HWFNY+lwk+dwaKEaEeGBfM48Vk8fklsUW9u/PlenYEBg==
xterm-addon-webgl@0.15.0-beta.15:
version "0.15.0-beta.15"
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.15.0-beta.15.tgz#bc9422425c27ebd86059f6b2465f01c5ec07071a"
integrity sha512-0zFn6Fsvo7jbSWO2TwNUHlAoceWWb2EYI/SgxN+H6+4kpUV1clP53pTQBdUpAtPEjJsVgxERqOPKBFu14TnR0w==
xterm-addon-webgl@0.15.0-beta.16:
version "0.15.0-beta.16"
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.15.0-beta.16.tgz#69ae1e3743737913007569e33ad58f4660fadddd"
integrity sha512-T08dObBpZhOh8LtqG9nV94yY9x7ONhnHMggTDUXzJvZ3SfrzgoDSDMKF84KhZsCtZShhJyQxR6+RNWX1nJZ8eA==
xterm-headless@5.2.0-beta.49:
version "5.2.0-beta.49"
resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-5.2.0-beta.49.tgz#ac6e833fa025441503db27980f40ab4ae549a3f4"
integrity sha512-jaNvl5f8Qx5xG1i79/7pzlAzUMC0Or8sPW7v/R7bw5MenMZPE5sE0pYNYW3xWB91voBPbGuXvrMdtraY8gL/Og==
xterm-headless@5.2.0-beta.53:
version "5.2.0-beta.53"
resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-5.2.0-beta.53.tgz#30c7853c44476f5d388b43449de40362b9e25c21"
integrity sha512-DvRoGp3gSZ3OkZaCOnIJCrXlSpN/Xghf/XacTKnuMTQQhBylD7CwxHmdqPuS3G1rVqnUnlJKAII7JcIZkW5BeQ==
xterm@5.2.0-beta.49:
version "5.2.0-beta.49"
resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.2.0-beta.49.tgz#0c9c176862019800172fc016d136300d1b6531ce"
integrity sha512-kfdiYljgAmjM9VpkNuuDcUJJHB62UiSTVZRYJbQdOU7jCi9mnUTPWov+5PnZIgONGts3t3Dv5kdbNF4UH53uTA==
xterm@5.2.0-beta.53:
version "5.2.0-beta.53"
resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.2.0-beta.53.tgz#4a9b618b675f5b6b860a7205c8ff0dfba0879ccd"
integrity sha512-REM8Jhffs23MqzF3MxdeODB8cr3ewqULN9Tl9jJdKQOpXBnLXcUKAeGeRVuFyeZYSoXH7fJicX1EJcsW8rPvZw==
yallist@^4.0.0:
version "4.0.0"

View file

@ -641,7 +641,18 @@ export interface ITerminalLaunchError {
export interface IProcessReadyEvent {
pid: number;
cwd: string;
requiresWindowsMode?: boolean;
windowsPty: IProcessReadyWindowsPty | undefined;
}
export interface IProcessReadyWindowsPty {
/**
* What pty emulation backend is being used.
*/
backend: 'conpty' | 'winpty';
/**
* The Windows build version (eg. 19045)
*/
buildNumber: number;
}
/**

View file

@ -13,7 +13,7 @@ import { RemoteLoggerChannelClient } from 'vs/platform/log/common/logIpc';
import { getResolvedShellEnv } from 'vs/platform/shell/node/shellEnv';
import { IPtyHostProcessReplayEvent } from 'vs/platform/terminal/common/capabilities/capabilities';
import { RequestStore } from 'vs/platform/terminal/common/requestStore';
import { HeartbeatConstants, IHeartbeatService, IProcessDataEvent, IProcessProperty, IProcessPropertyMap, IPtyService, IRequestResolveVariablesEvent, ISerializedTerminalState, IShellLaunchConfig, ITerminalLaunchError, ITerminalProcessOptions, ITerminalProfile, ITerminalsLayoutInfo, ProcessPropertyType, TerminalIcon, TerminalIpcChannels, TerminalSettingId, TitleEventSource } from 'vs/platform/terminal/common/terminal';
import { HeartbeatConstants, IHeartbeatService, IProcessDataEvent, IProcessProperty, IProcessPropertyMap, IProcessReadyEvent, IPtyService, IRequestResolveVariablesEvent, ISerializedTerminalState, IShellLaunchConfig, ITerminalLaunchError, ITerminalProcessOptions, ITerminalProfile, ITerminalsLayoutInfo, ProcessPropertyType, TerminalIcon, TerminalIpcChannels, TerminalSettingId, TitleEventSource } from 'vs/platform/terminal/common/terminal';
import { registerTerminalPlatformConfiguration } from 'vs/platform/terminal/common/terminalPlatformConfiguration';
import { IGetTerminalLayoutInfoArgs, IProcessDetails, ISetTerminalLayoutInfoArgs } from 'vs/platform/terminal/common/terminalProcess';
import { IPtyHostConnection, IPtyHostStarter } from 'vs/platform/terminal/node/ptyHost';
@ -76,7 +76,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 } }>());
private readonly _onProcessReady = this._register(new Emitter<{ id: number; event: IProcessReadyEvent }>());
readonly onProcessReady = this._onProcessReady.event;
private readonly _onProcessReplay = this._register(new Emitter<{ id: number; event: IPtyHostProcessReplayEvent }>());
readonly onProcessReplay = this._onProcessReplay.event;

View file

@ -52,7 +52,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 } }>());
private readonly _onProcessReady = this._register(new Emitter<{ id: number; event: IProcessReadyEvent }>());
readonly onProcessReady = this._onProcessReady.event;
private readonly _onProcessExit = this._register(new Emitter<{ id: number; event: number | undefined }>());
readonly onProcessExit = this._onProcessExit.event;
@ -720,7 +720,7 @@ class PersistentTerminalProcess extends Disposable {
return result;
}
this._onProcessReady.fire({ pid: this._pid, cwd: this._cwd, requiresWindowsMode: isWindows && getWindowsBuildNumber() < 21376 });
this._onProcessReady.fire({ pid: this._pid, cwd: this._cwd, windowsPty: this._terminalProcess.getWindowsPty() });
this._onDidChangeProperty.fire({ type: ProcessPropertyType.Title, value: this._terminalProcess.currentTitle });
this._onDidChangeProperty.fire({ type: ProcessPropertyType.ShellType, value: this._terminalProcess.shellType });
this.triggerReplay();

View file

@ -15,7 +15,7 @@ import { Promises } from 'vs/base/node/pfs';
import { localize } from 'vs/nls';
import { ILogService } from 'vs/platform/log/common/log';
import { IProductService } from 'vs/platform/product/common/productService';
import { FlowControlConstants, IShellLaunchConfig, ITerminalChildProcess, ITerminalLaunchError, IProcessProperty, IProcessPropertyMap as IProcessPropertyMap, ProcessPropertyType, TerminalShellType, IProcessReadyEvent, ITerminalProcessOptions, PosixShellType } from 'vs/platform/terminal/common/terminal';
import { FlowControlConstants, IShellLaunchConfig, ITerminalChildProcess, ITerminalLaunchError, IProcessProperty, IProcessPropertyMap as IProcessPropertyMap, ProcessPropertyType, TerminalShellType, IProcessReadyEvent, ITerminalProcessOptions, PosixShellType, IProcessReadyWindowsPty } from 'vs/platform/terminal/common/terminal';
import { ChildProcessMonitor } from 'vs/platform/terminal/node/childProcessMonitor';
import { findExecutable, getShellIntegrationInjection, getWindowsBuildNumber, IShellIntegrationConfigInjection } from 'vs/platform/terminal/node/terminalEnvironment';
import { WindowsShellHelper } from 'vs/platform/terminal/node/windowsShellHelper';
@ -398,7 +398,11 @@ export class TerminalProcess extends Disposable implements ITerminalChildProcess
}
private _sendProcessId(pid: number) {
this._onProcessReady.fire({ pid, cwd: this._initialCwd, requiresWindowsMode: isWindows && getWindowsBuildNumber() < 21376 });
this._onProcessReady.fire({
pid,
cwd: this._initialCwd,
windowsPty: this.getWindowsPty()
});
}
private _sendProcessTitle(ptyProcess: IPty): void {
@ -616,6 +620,13 @@ export class TerminalProcess extends Disposable implements ITerminalChildProcess
getLatency(): Promise<number> {
return Promise.resolve(0);
}
getWindowsPty(): IProcessReadyWindowsPty | undefined {
return isWindows ? {
backend: 'useConpty' in this._ptyOptions && this._ptyOptions.useConpty ? 'conpty' : 'winpty',
buildNumber: getWindowsBuildNumber()
} : undefined;
}
}
/**

View file

@ -10,7 +10,7 @@ import { URI } from 'vs/base/common/uri';
import { StopWatch } from 'vs/base/common/stopwatch';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { ILogService } from 'vs/platform/log/common/log';
import { IProcessProperty, IShellLaunchConfig, IShellLaunchConfigDto, ITerminalOutputMatch, ITerminalOutputMatcher, ProcessPropertyType, TerminalExitReason, TerminalLocation } from 'vs/platform/terminal/common/terminal';
import { IProcessProperty, IProcessReadyWindowsPty, IShellLaunchConfig, IShellLaunchConfigDto, ITerminalOutputMatch, ITerminalOutputMatcher, ProcessPropertyType, TerminalExitReason, TerminalLocation } from 'vs/platform/terminal/common/terminal';
import { TerminalDataBufferer } from 'vs/platform/terminal/common/terminalDataBuffering';
import { ITerminalEditorService, ITerminalExternalLinkProvider, ITerminalGroupService, ITerminalInstance, ITerminalLink, ITerminalService } from 'vs/workbench/contrib/terminal/browser/terminal';
import { TerminalProcessExtHostProxy } from 'vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy';
@ -375,8 +375,8 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape
this._terminalProcessProxies.get(terminalId)?.emitData(data);
}
public $sendProcessReady(terminalId: number, pid: number, cwd: string): void {
this._terminalProcessProxies.get(terminalId)?.emitReady(pid, cwd);
public $sendProcessReady(terminalId: number, pid: number, cwd: string, windowsPty: IProcessReadyWindowsPty | undefined): void {
this._terminalProcessProxies.get(terminalId)?.emitReady(pid, cwd, windowsPty);
}
public $sendProcessProperty(terminalId: number, property: IProcessProperty<any>): void {

View file

@ -42,7 +42,7 @@ import { IRemoteConnectionData, TunnelDescription } from 'vs/platform/remote/com
import { ClassifiedEvent, IGDPRProperty, OmitMetadata, StrictPropertyCheck } from 'vs/platform/telemetry/common/gdprTypings';
import { TelemetryLevel } from 'vs/platform/telemetry/common/telemetry';
import { ISerializableEnvironmentDescriptionMap, ISerializableEnvironmentVariableCollection } from 'vs/platform/terminal/common/environmentVariable';
import { ICreateContributedTerminalProfileOptions, IProcessProperty, IShellLaunchConfigDto, ITerminalEnvironment, ITerminalLaunchError, ITerminalProfile, TerminalExitReason, TerminalLocation } from 'vs/platform/terminal/common/terminal';
import { ICreateContributedTerminalProfileOptions, IProcessProperty, IProcessReadyWindowsPty, IShellLaunchConfigDto, ITerminalEnvironment, ITerminalLaunchError, ITerminalProfile, TerminalExitReason, TerminalLocation } from 'vs/platform/terminal/common/terminal';
import { ProvidedPortAttributes, TunnelCreationOptions, TunnelOptions, TunnelPrivacyId, TunnelProviderFeatures } from 'vs/platform/tunnel/common/tunnel';
import { EditSessionIdentityMatch } from 'vs/platform/workspace/common/editSessions';
import { WorkspaceTrustRequestOptions } from 'vs/platform/workspace/common/workspaceTrust';
@ -506,7 +506,7 @@ export interface MainThreadTerminalServiceShape extends IDisposable {
// Process
$sendProcessData(terminalId: number, data: string): void;
$sendProcessReady(terminalId: number, pid: number, cwd: string): void;
$sendProcessReady(terminalId: number, pid: number, cwd: string, windowsPty: IProcessReadyWindowsPty | undefined): void;
$sendProcessProperty(terminalId: number, property: IProcessProperty<any>): void;
$sendProcessExit(terminalId: number, exitCode: number | undefined): void;
}

View file

@ -334,7 +334,7 @@ class ExtHostPseudoterminal implements ITerminalChildProcess {
this._pty.setDimensions?.(initialDimensions);
}
this._onProcessReady.fire({ pid: -1, cwd: '' });
this._onProcessReady.fire({ pid: -1, cwd: '', windowsPty: undefined });
}
}
@ -583,7 +583,7 @@ export abstract class BaseExtHostTerminalService extends Disposable implements I
protected _setupExtHostProcessListeners(id: number, p: ITerminalChildProcess): IDisposable {
const disposables = new DisposableStore();
disposables.add(p.onProcessReady(e => this._proxy.$sendProcessReady(id, e.pid, e.cwd)));
disposables.add(p.onProcessReady(e => this._proxy.$sendProcessReady(id, e.pid, e.cwd, e.windowsPty)));
disposables.add(p.onDidChangeProperty(property => this._proxy.$sendProcessProperty(id, property)));
// Buffer data events to reduce the amount of messages going to the renderer

View file

@ -788,9 +788,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
if (this._processManager.os) {
lineDataEventAddon.setOperatingSystem(this._processManager.os);
}
if (this._processManager.os === OperatingSystem.Windows) {
xterm.raw.options.windowsMode = processTraits.requiresWindowsMode || false;
}
xterm.raw.options.windowsPty = processTraits.windowsPty;
});
this._processManager.onRestoreCommands(e => this.xterm?.shellIntegration.deserialize(e));

View file

@ -64,7 +64,7 @@ export class TerminalProcessExtHostProxy extends Disposable implements ITerminal
}
emitReady(pid: number, cwd: string): void {
this._onProcessReady.fire({ pid, cwd });
this._onProcessReady.fire({ pid, cwd, windowsPty: undefined });
}
emitProcessProperty({ type, value }: IProcessProperty<any>): void {

View file

@ -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 } from 'vs/workbench/contrib/terminal/common/environmentVariable';
import { IProcessDataEvent, IRequestResolveVariablesEvent, IShellLaunchConfigDto, ITerminalLaunchError, ITerminalProfile, ITerminalsLayoutInfo, ITerminalsLayoutInfoById, TerminalIcon, IProcessProperty, ProcessPropertyType, IProcessPropertyMap, TitleEventSource, ISerializedTerminalState, IPtyHostController, ITerminalProcessOptions } from 'vs/platform/terminal/common/terminal';
import { IProcessDataEvent, IRequestResolveVariablesEvent, IShellLaunchConfigDto, ITerminalLaunchError, ITerminalProfile, ITerminalsLayoutInfo, ITerminalsLayoutInfoById, TerminalIcon, IProcessProperty, ProcessPropertyType, IProcessPropertyMap, TitleEventSource, ISerializedTerminalState, IPtyHostController, ITerminalProcessOptions, IProcessReadyEvent } from 'vs/platform/terminal/common/terminal';
import { IGetTerminalLayoutInfoArgs, IProcessDetails, ISetTerminalLayoutInfoArgs } from 'vs/platform/terminal/common/terminalProcess';
import { IProcessEnvironment, OperatingSystem } from 'vs/base/common/platform';
import { ICompleteTerminalConfiguration } from 'vs/workbench/contrib/terminal/common/terminal';
@ -80,8 +80,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; requireWindowsMode?: boolean } }> {
return this._channel.listen<{ id: number; event: { pid: number; cwd: string; requiresWindowsMode?: boolean } }>('$onProcessReadyEvent');
get onProcessReady(): Event<{ id: number; event: IProcessReadyEvent }> {
return this._channel.listen<{ id: number; event: IProcessReadyEvent }>('$onProcessReadyEvent');
}
get onProcessReplay(): Event<{ id: number; event: IPtyHostProcessReplayEvent }> {
return this._channel.listen<{ id: number; event: IPtyHostProcessReplayEvent }>('$onProcessReplayEvent');

View file

@ -8,7 +8,7 @@ import { Event } from 'vs/base/common/event';
import { IDisposable } from 'vs/base/common/lifecycle';
import { IProcessEnvironment, OperatingSystem } from 'vs/base/common/platform';
import { IExtensionPointDescriptor } from 'vs/workbench/services/extensions/common/extensionsRegistry';
import { IProcessDataEvent, IProcessReadyEvent, IShellLaunchConfig, ITerminalChildProcess, ITerminalLaunchError, ITerminalProfile, ITerminalProfileObject, ITerminalsLayoutInfo, ITerminalsLayoutInfoById, TerminalIcon, TerminalLocationString, IProcessProperty, TitleEventSource, ProcessPropertyType, IFixedTerminalDimensions, IExtensionTerminalProfile, ICreateContributedTerminalProfileOptions, IProcessPropertyMap, ITerminalEnvironment, ITerminalProcessOptions, ITerminalContributions } from 'vs/platform/terminal/common/terminal';
import { IProcessDataEvent, IProcessReadyEvent, IShellLaunchConfig, ITerminalChildProcess, ITerminalLaunchError, ITerminalProfile, ITerminalProfileObject, ITerminalsLayoutInfo, ITerminalsLayoutInfoById, TerminalIcon, TerminalLocationString, IProcessProperty, TitleEventSource, ProcessPropertyType, IFixedTerminalDimensions, IExtensionTerminalProfile, ICreateContributedTerminalProfileOptions, IProcessPropertyMap, ITerminalEnvironment, ITerminalProcessOptions, ITerminalContributions, IProcessReadyWindowsPty } from 'vs/platform/terminal/common/terminal';
import { IEnvironmentVariableInfo } from 'vs/workbench/contrib/terminal/common/environmentVariable';
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
import { URI } from 'vs/base/common/uri';
@ -428,7 +428,7 @@ export interface ITerminalProcessExtHostProxy extends IDisposable {
emitData(data: string): void;
emitProcessProperty(property: IProcessProperty<any>): void;
emitReady(pid: number, cwd: string): void;
emitReady(pid: number, cwd: string, windowsPty: IProcessReadyWindowsPty | undefined): void;
emitLatency(latency: number): void;
emitExit(exitCode: number | undefined): void;

View file

@ -10,7 +10,7 @@ import { language } from 'vs/base/common/platform';
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, ProcessPropertyType, TerminalLocation, TerminalShellType } from 'vs/platform/terminal/common/terminal';
import { IProcessDataEvent, IProcessPropertyMap, IProcessReadyEvent, 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';
@ -238,13 +238,13 @@ 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 }>());
private readonly _onProcessReady = this._register(new Emitter<IProcessReadyEvent>());
public readonly onProcessReady = this._onProcessReady.event;
public readonly onProcessShellTypeChanged = this._register(new Emitter<TerminalShellType>()).event;
public start(): Promise<ITerminalLaunchError | undefined> {
this.startedDeferred.complete();
this._onProcessReady.fire({ pid: -1, cwd: '' });
this._onProcessReady.fire({ pid: -1, cwd: '', windowsPty: undefined });
return Promise.resolve(undefined);
}
public shutdown(): void {

View file

@ -6,7 +6,7 @@
import { InstantiationType, registerSingleton } from 'vs/platform/instantiation/common/extensions';
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
import { Emitter, Event } from 'vs/base/common/event';
import { IProcessDataEvent, IProcessProperty, IProcessPropertyMap, IShellLaunchConfig, ITerminalChildProcess, ITerminalLaunchError, ProcessPropertyType } from 'vs/platform/terminal/common/terminal';
import { IProcessDataEvent, IProcessProperty, IProcessPropertyMap, IProcessReadyEvent, IShellLaunchConfig, ITerminalChildProcess, ITerminalLaunchError, ProcessPropertyType } from 'vs/platform/terminal/common/terminal';
import { Disposable } from 'vs/base/common/lifecycle';
export const IEmbedderTerminalService = createDecorator<IEmbedderTerminalService>('embedderTerminalService');
@ -77,7 +77,7 @@ class EmbedderTerminalProcess extends Disposable implements ITerminalChildProces
readonly shouldPersist = false;
readonly onProcessData: Event<IProcessDataEvent | string>;
readonly #onProcessReady = this._register(new Emitter<{ pid: number; cwd: string }>());
readonly #onProcessReady = this._register(new Emitter<IProcessReadyEvent>());
readonly onProcessReady = this.#onProcessReady.event;
readonly #onDidChangeProperty = this._register(new Emitter<IProcessProperty<any>>());
readonly onDidChangeProperty = this.#onDidChangeProperty.event;
@ -104,7 +104,7 @@ class EmbedderTerminalProcess extends Disposable implements ITerminalChildProces
}
async start(): Promise<ITerminalLaunchError | undefined> {
this.#onProcessReady.fire({ pid: -1, cwd: '' });
this.#onProcessReady.fire({ pid: -1, cwd: '', windowsPty: undefined });
this.#pty.open();
return undefined;
}

View file

@ -10453,45 +10453,45 @@ xtend@~2.1.1:
dependencies:
object-keys "~0.4.0"
xterm-addon-canvas@0.4.0-beta.14:
version "0.4.0-beta.14"
resolved "https://registry.yarnpkg.com/xterm-addon-canvas/-/xterm-addon-canvas-0.4.0-beta.14.tgz#ed8b5d2a839608ae5c9c73d1fa11f6ffb5f92be7"
integrity sha512-FBlHGuSjQMuujwOBhuoOO16iLHgeQ9ucOApsTS+Hf0ZpOnFVQX3JQDYAWlxRIpfDa/HiEGYPhAgFjqqFMtXL4Q==
xterm-addon-canvas@0.4.0-beta.15:
version "0.4.0-beta.15"
resolved "https://registry.yarnpkg.com/xterm-addon-canvas/-/xterm-addon-canvas-0.4.0-beta.15.tgz#8e181ec587c9b339619d363f80becb8db48435e3"
integrity sha512-fNwkh5locfVgXn+t9tmtKYaGJaemykPc3fu+RVhrbMrAJTYIM0rIXLypB8VKgeDGhkiOwXQaf7xwU2LpcCIZNw==
xterm-addon-image@0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/xterm-addon-image/-/xterm-addon-image-0.4.0.tgz#36e98fa892db11755a5f6e9654f924e876e29bf8"
integrity sha512-3wumCJo4WTzxvecSMxJ7XtpVQeFe4gE2cdHCyUdo7zagVkS18YXJacGx6DjlAIccdJn6/LhGuD99xOSSvYx9Gw==
xterm-addon-search@0.12.0-beta.5:
version "0.12.0-beta.5"
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.12.0-beta.5.tgz#36bae02306a54837b86beebbf4ac1b9b19a0d567"
integrity sha512-ci3SMkjyGR+C9bRaeQerLY8WneJY6oeI/YLkM80ZgH4C3ViuD2foZav2AbcW5I7uwaHz3CFjlKAY6Nf00TRG8g==
xterm-addon-search@0.12.0-beta.6:
version "0.12.0-beta.6"
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.12.0-beta.6.tgz#1c9afb69cca586a94e8965712387ee210ccd8d64"
integrity sha512-DJSDhdm7zqgUBGs4oq/yBvBxTgos3DaBveBx8j+KYRPPeHmfLa8mex1rC5iYTxsk80uzVny5VQgMrpMgAfZQyg==
xterm-addon-serialize@0.10.0-beta.2:
version "0.10.0-beta.2"
resolved "https://registry.yarnpkg.com/xterm-addon-serialize/-/xterm-addon-serialize-0.10.0-beta.2.tgz#331a5f54ab1380e4d5fcde7f03ac28b138efa803"
integrity sha512-cCUoWGTFcBT4kDNhUP/Lohl5hJStEtxprJErYdhvT8lorPhA+zai6Sv0sT3A5Je5nmG2rSrS9hPZUj6kmPjGvw==
xterm-addon-serialize@0.10.0-beta.3:
version "0.10.0-beta.3"
resolved "https://registry.yarnpkg.com/xterm-addon-serialize/-/xterm-addon-serialize-0.10.0-beta.3.tgz#3fd186421a26c1ebcf448c699103f840d97db049"
integrity sha512-nlnOS+5If/VOlekRh7rJmuO7bkpzyZd56p0JijQRp8KUrwPrlGFn0AEUcy8291d9L6A1RTCDU+E4YiRobAPoVA==
xterm-addon-unicode11@0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.5.0.tgz#41c0d96acc1e3bb6c6596eee64e163b6bca74be7"
integrity sha512-Jm4/g4QiTxiKiTbYICQgC791ubhIZyoIwxAIgOW8z8HWFNY+lwk+dwaKEaEeGBfM48Vk8fklsUW9u/PlenYEBg==
xterm-addon-webgl@0.15.0-beta.15:
version "0.15.0-beta.15"
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.15.0-beta.15.tgz#bc9422425c27ebd86059f6b2465f01c5ec07071a"
integrity sha512-0zFn6Fsvo7jbSWO2TwNUHlAoceWWb2EYI/SgxN+H6+4kpUV1clP53pTQBdUpAtPEjJsVgxERqOPKBFu14TnR0w==
xterm-addon-webgl@0.15.0-beta.16:
version "0.15.0-beta.16"
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.15.0-beta.16.tgz#69ae1e3743737913007569e33ad58f4660fadddd"
integrity sha512-T08dObBpZhOh8LtqG9nV94yY9x7ONhnHMggTDUXzJvZ3SfrzgoDSDMKF84KhZsCtZShhJyQxR6+RNWX1nJZ8eA==
xterm-headless@5.2.0-beta.49:
version "5.2.0-beta.49"
resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-5.2.0-beta.49.tgz#ac6e833fa025441503db27980f40ab4ae549a3f4"
integrity sha512-jaNvl5f8Qx5xG1i79/7pzlAzUMC0Or8sPW7v/R7bw5MenMZPE5sE0pYNYW3xWB91voBPbGuXvrMdtraY8gL/Og==
xterm-headless@5.2.0-beta.53:
version "5.2.0-beta.53"
resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-5.2.0-beta.53.tgz#30c7853c44476f5d388b43449de40362b9e25c21"
integrity sha512-DvRoGp3gSZ3OkZaCOnIJCrXlSpN/Xghf/XacTKnuMTQQhBylD7CwxHmdqPuS3G1rVqnUnlJKAII7JcIZkW5BeQ==
xterm@5.2.0-beta.49:
version "5.2.0-beta.49"
resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.2.0-beta.49.tgz#0c9c176862019800172fc016d136300d1b6531ce"
integrity sha512-kfdiYljgAmjM9VpkNuuDcUJJHB62UiSTVZRYJbQdOU7jCi9mnUTPWov+5PnZIgONGts3t3Dv5kdbNF4UH53uTA==
xterm@5.2.0-beta.53:
version "5.2.0-beta.53"
resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.2.0-beta.53.tgz#4a9b618b675f5b6b860a7205c8ff0dfba0879ccd"
integrity sha512-REM8Jhffs23MqzF3MxdeODB8cr3ewqULN9Tl9jJdKQOpXBnLXcUKAeGeRVuFyeZYSoXH7fJicX1EJcsW8rPvZw==
y18n@^3.2.1:
version "3.2.2"