mirror of
https://github.com/microsoft/vscode.git
synced 2026-07-13 23:44:09 +01:00
Don't relaunch extension owned terminals (#117987)
Co-authored-by: Daniel Imms <daimms@microsoft.com>
This commit is contained in:
@@ -229,6 +229,11 @@ export interface IShellLaunchConfig {
|
||||
* Whether flow control is enabled for this terminal.
|
||||
*/
|
||||
flowControl?: boolean;
|
||||
|
||||
/**
|
||||
* Whether this terminal was created by an extension.
|
||||
*/
|
||||
isExtensionOwnedTerminal?: boolean;
|
||||
}
|
||||
|
||||
export interface ITerminalEnvironment {
|
||||
|
||||
@@ -129,7 +129,8 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape
|
||||
hideFromUser: launchConfig.hideFromUser,
|
||||
isExtensionTerminal: launchConfig.isExtensionTerminal,
|
||||
extHostTerminalId: extHostTerminalId,
|
||||
isFeatureTerminal: launchConfig.isFeatureTerminal
|
||||
isFeatureTerminal: launchConfig.isFeatureTerminal,
|
||||
isExtensionOwnedTerminal: launchConfig.isExtensionOwnedTerminal
|
||||
};
|
||||
const terminal = this._terminalService.createTerminal(shellLaunchConfig);
|
||||
this._extHostTerminalIds.set(extHostTerminalId, terminal.instanceId);
|
||||
|
||||
@@ -459,6 +459,7 @@ export interface TerminalLaunchConfig {
|
||||
hideFromUser?: boolean;
|
||||
isExtensionTerminal?: boolean;
|
||||
isFeatureTerminal?: boolean;
|
||||
isExtensionOwnedTerminal?: boolean;
|
||||
}
|
||||
|
||||
export interface MainThreadTerminalServiceShape extends IDisposable {
|
||||
|
||||
@@ -120,12 +120,13 @@ export class ExtHostTerminal {
|
||||
waitOnExit?: boolean,
|
||||
strictEnv?: boolean,
|
||||
hideFromUser?: boolean,
|
||||
isFeatureTerminal?: boolean
|
||||
isFeatureTerminal?: boolean,
|
||||
isExtensionOwnedTerminal?: boolean
|
||||
): Promise<void> {
|
||||
if (typeof this._id !== 'string') {
|
||||
throw new Error('Terminal has already been created');
|
||||
}
|
||||
await this._proxy.$createTerminal(this._id, { name: this._name, shellPath, shellArgs, cwd, env, waitOnExit, strictEnv, hideFromUser, isFeatureTerminal });
|
||||
await this._proxy.$createTerminal(this._id, { name: this._name, shellPath, shellArgs, cwd, env, waitOnExit, strictEnv, hideFromUser, isFeatureTerminal, isExtensionOwnedTerminal });
|
||||
}
|
||||
|
||||
public async createExtensionTerminal(): Promise<number> {
|
||||
|
||||
@@ -66,7 +66,9 @@ export class ExtHostTerminalService extends BaseExtHostTerminalService {
|
||||
/*options.waitOnExit*/ undefined,
|
||||
withNullAsUndefined(options.strictEnv),
|
||||
withNullAsUndefined(options.hideFromUser),
|
||||
withNullAsUndefined(isFeatureTerminal));
|
||||
withNullAsUndefined(isFeatureTerminal),
|
||||
true
|
||||
);
|
||||
return terminal.value;
|
||||
}
|
||||
|
||||
|
||||
@@ -1591,7 +1591,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
||||
|
||||
// Recreate the process if the terminal has not yet been interacted with and it's not a
|
||||
// special terminal (eg. task, extension terminal)
|
||||
if (info.requiresAction && !this._processManager.hasWrittenData && !this._shellLaunchConfig.isFeatureTerminal && !this._shellLaunchConfig.isExtensionTerminal && !this._shellLaunchConfig.attachPersistentProcess) {
|
||||
if (info.requiresAction && !this._processManager.hasWrittenData && !this._shellLaunchConfig.isFeatureTerminal && !this._shellLaunchConfig.isExtensionTerminal && !this._shellLaunchConfig.isExtensionOwnedTerminal && !this._shellLaunchConfig.attachPersistentProcess) {
|
||||
this.relaunch();
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user