Skip to content

Commit aa6b2f1

Browse files
committed
Initial terminal welcome support
1 parent b2b71a8 commit aa6b2f1

10 files changed

Lines changed: 76 additions & 27 deletions

File tree

src/vs/workbench/api/browser/mainThreadTerminalService.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,10 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape
178178
this._linkProvider = undefined;
179179
}
180180

181+
public $registerProcessSupport(isSupported: boolean): void {
182+
this._terminalService.registerProcessSupport(isSupported);
183+
}
184+
181185
private _onActiveTerminalChanged(terminalId: number | null): void {
182186
this._proxy.$acceptActiveTerminalChanged(terminalId);
183187
}

src/vs/workbench/api/common/extHost.protocol.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,7 @@ export interface MainThreadTerminalServiceShape extends IDisposable {
450450
$stopSendingDataEvents(): void;
451451
$startLinkProvider(): void;
452452
$stopLinkProvider(): void;
453+
$registerProcessSupport(isSupported: boolean): void;
453454
$setEnvironmentVariableCollection(extensionIdentifier: string, persistent: boolean, collection: ISerializableEnvironmentVariableCollection | undefined): void;
454455

455456
// Process

src/vs/workbench/api/common/extHostTerminalService.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,7 @@ export abstract class BaseExtHostTerminalService implements IExtHostTerminalServ
339339
public get onDidWriteTerminalData(): Event<vscode.TerminalDataWriteEvent> { return this._onDidWriteTerminalData && this._onDidWriteTerminalData.event; }
340340

341341
constructor(
342+
supportsProcesses: boolean,
342343
@IExtHostRpcService extHostRpc: IExtHostRpcService
343344
) {
344345
this._proxy = extHostRpc.getProxy(MainContext.MainThreadTerminalService);
@@ -347,6 +348,7 @@ export abstract class BaseExtHostTerminalService implements IExtHostTerminalServ
347348
onFirstListenerAdd: () => this._proxy.$startSendingDataEvents(),
348349
onLastListenerRemove: () => this._proxy.$stopSendingDataEvents()
349350
});
351+
this._proxy.$registerProcessSupport(supportsProcesses);
350352
}
351353

352354
public abstract createTerminal(name?: string, shellPath?: string, shellArgs?: string[] | string): vscode.Terminal;
@@ -805,6 +807,12 @@ export class EnvironmentVariableCollection implements vscode.EnvironmentVariable
805807
}
806808

807809
export class WorkerExtHostTerminalService extends BaseExtHostTerminalService {
810+
constructor(
811+
@IExtHostRpcService extHostRpc: IExtHostRpcService
812+
) {
813+
super(false, extHostRpc);
814+
}
815+
808816
public createTerminal(name?: string, shellPath?: string, shellArgs?: string[] | string): vscode.Terminal {
809817
throw new NotSupportedError();
810818
}

src/vs/workbench/api/node/extHostTerminalService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export class ExtHostTerminalService extends BaseExtHostTerminalService {
3939
@IExtHostDocumentsAndEditors private _extHostDocumentsAndEditors: ExtHostDocumentsAndEditors,
4040
@ILogService private _logService: ILogService
4141
) {
42-
super(extHostRpc);
42+
super(true, extHostRpc);
4343
this._updateLastActiveWorkspace();
4444
this._updateVariableResolver();
4545
this._registerListeners();

src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { Extensions as ActionExtensions, IWorkbenchActionRegistry } from 'vs/wor
2121
import { Extensions as ViewContainerExtensions, IViewContainersRegistry, ViewContainerLocation, IViewsRegistry } from 'vs/workbench/common/views';
2222
import { registerTerminalActions, ClearTerminalAction, CopyTerminalSelectionAction, CreateNewTerminalAction, KillTerminalAction, SelectAllTerminalAction, SelectDefaultShellWindowsTerminalAction, SplitInActiveWorkspaceTerminalAction, SplitTerminalAction, TerminalPasteAction, ToggleTerminalAction, terminalSendSequenceCommand } from 'vs/workbench/contrib/terminal/browser/terminalActions';
2323
import { TerminalViewPane } from 'vs/workbench/contrib/terminal/browser/terminalView';
24-
import { KEYBINDING_CONTEXT_TERMINAL_SHELL_TYPE_KEY, KEYBINDING_CONTEXT_TERMINAL_FOCUS, KEYBINDING_CONTEXT_TERMINAL_TEXT_SELECTED, TERMINAL_VIEW_ID, TERMINAL_ACTION_CATEGORY, TERMINAL_COMMAND_ID } from 'vs/workbench/contrib/terminal/common/terminal';
24+
import { KEYBINDING_CONTEXT_TERMINAL_SHELL_TYPE_KEY, KEYBINDING_CONTEXT_TERMINAL_FOCUS, KEYBINDING_CONTEXT_TERMINAL_TEXT_SELECTED, TERMINAL_VIEW_ID, TERMINAL_ACTION_CATEGORY, TERMINAL_COMMAND_ID, KEYBINDING_CONTEXT_TERMINAL_PROCESS_SUPPORTED } from 'vs/workbench/contrib/terminal/common/terminal';
2525
import { registerColors } from 'vs/workbench/contrib/terminal/common/terminalColorRegistry';
2626
import { setupTerminalCommands } from 'vs/workbench/contrib/terminal/browser/terminalCommands';
2727
import { setupTerminalMenu } from 'vs/workbench/contrib/terminal/common/terminalMenu';
@@ -88,7 +88,7 @@ actionRegistry.registerWorkbenchAction(SyncActionDescriptor.from(KillTerminalAct
8888
actionRegistry.registerWorkbenchAction(SyncActionDescriptor.from(CreateNewTerminalAction, {
8989
primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.US_BACKTICK,
9090
mac: { primary: KeyMod.WinCtrl | KeyMod.Shift | KeyCode.US_BACKTICK }
91-
}), 'Terminal: Create New Integrated Terminal', category);
91+
}), 'Terminal: Create New Integrated Terminal', category, KEYBINDING_CONTEXT_TERMINAL_PROCESS_SUPPORTED);
9292
actionRegistry.registerWorkbenchAction(SyncActionDescriptor.from(SelectAllTerminalAction, {
9393
// Don't use ctrl+a by default as that would override the common go to start
9494
// of prompt shell binding

src/vs/workbench/contrib/terminal/browser/terminal.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ export interface ITerminalService {
7676
configHelper: ITerminalConfigHelper;
7777
terminalInstances: ITerminalInstance[];
7878
terminalTabs: ITerminalTab[];
79+
isProcessSupportRegistered: boolean;
7980

8081
onActiveTabChanged: Event<void>;
8182
onTabDisposed: Event<ITerminalTab>;
@@ -90,6 +91,7 @@ export interface ITerminalService {
9091
onInstanceTitleChanged: Event<ITerminalInstance>;
9192
onActiveInstanceChanged: Event<ITerminalInstance | undefined>;
9293
onRequestAvailableShells: Event<IAvailableShellsRequest>;
94+
onDidRegisterProcessSupport: Event<void>;
9395

9496
/**
9597
* Creates a terminal.
@@ -136,6 +138,7 @@ export interface ITerminalService {
136138
findNext(): void;
137139
findPrevious(): void;
138140

141+
registerProcessSupport(isSupported: boolean): void;
139142
/**
140143
* Registers a link provider that enables integrators to add links to the terminal.
141144
* @param linkProvider When registered, the link provider is asked whenever a cell is hovered

src/vs/workbench/contrib/terminal/browser/terminalActions.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { Action, IAction } from 'vs/base/common/actions';
77
import { EndOfLinePreference } from 'vs/editor/common/model';
88
import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService';
9-
import { TERMINAL_VIEW_ID, ITerminalConfigHelper, TitleEventSource, TERMINAL_COMMAND_ID, KEYBINDING_CONTEXT_TERMINAL_FIND_FOCUSED, TERMINAL_ACTION_CATEGORY, KEYBINDING_CONTEXT_TERMINAL_FOCUS, KEYBINDING_CONTEXT_TERMINAL_FIND_VISIBLE, KEYBINDING_CONTEXT_TERMINAL_TEXT_SELECTED, KEYBINDING_CONTEXT_TERMINAL_FIND_NOT_VISIBLE, KEYBINDING_CONTEXT_TERMINAL_A11Y_TREE_FOCUS } from 'vs/workbench/contrib/terminal/common/terminal';
9+
import { TERMINAL_VIEW_ID, ITerminalConfigHelper, TitleEventSource, TERMINAL_COMMAND_ID, KEYBINDING_CONTEXT_TERMINAL_FIND_FOCUSED, TERMINAL_ACTION_CATEGORY, KEYBINDING_CONTEXT_TERMINAL_FOCUS, KEYBINDING_CONTEXT_TERMINAL_FIND_VISIBLE, KEYBINDING_CONTEXT_TERMINAL_TEXT_SELECTED, KEYBINDING_CONTEXT_TERMINAL_FIND_NOT_VISIBLE, KEYBINDING_CONTEXT_TERMINAL_A11Y_TREE_FOCUS, KEYBINDING_CONTEXT_TERMINAL_PROCESS_SUPPORTED } from 'vs/workbench/contrib/terminal/common/terminal';
1010
import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService';
1111
import { attachSelectBoxStyler, attachStylerCallback } from 'vs/platform/theme/common/styler';
1212
import { IThemeService } from 'vs/platform/theme/common/themeService';
@@ -367,7 +367,7 @@ export class SwitchTerminalActionViewItem extends SelectActionViewItem {
367367
this._register(_terminalService.onActiveTabChanged(this._updateItems, this));
368368
this._register(_terminalService.onInstanceTitleChanged(this._updateItems, this));
369369
this._register(_terminalService.onTabDisposed(this._updateItems, this));
370-
this._register(attachSelectBoxStyler(this.selectBox, _themeService));
370+
this._register(attachSelectBoxStyler(this.selectBox, this._themeService));
371371
}
372372

373373
render(container: HTMLElement): void {
@@ -437,7 +437,8 @@ export function registerTerminalActions() {
437437
id: TERMINAL_COMMAND_ID.NEW_IN_ACTIVE_WORKSPACE,
438438
title: { value: localize('workbench.action.terminal.newInActiveWorkspace', "Create New Integrated Terminal (In Active Workspace)"), original: 'Create New Integrated Terminal (In Active Workspace)' },
439439
f1: true,
440-
category
440+
category,
441+
precondition: KEYBINDING_CONTEXT_TERMINAL_PROCESS_SUPPORTED
441442
});
442443
}
443444
async run(accessor: ServicesAccessor) {

src/vs/workbench/contrib/terminal/browser/terminalService.ts

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import * as nls from 'vs/nls';
7-
import { TERMINAL_VIEW_ID, IShellLaunchConfig, ITerminalConfigHelper, ISpawnExtHostProcessRequest, IStartExtensionTerminalRequest, IAvailableShellsRequest, KEYBINDING_CONTEXT_TERMINAL_FOCUS, KEYBINDING_CONTEXT_TERMINAL_FIND_VISIBLE, KEYBINDING_CONTEXT_TERMINAL_IS_OPEN, ITerminalProcessExtHostProxy, IShellDefinition, LinuxDistro, KEYBINDING_CONTEXT_TERMINAL_SHELL_TYPE, ITerminalLaunchError, ITerminalNativeWindowsDelegate } from 'vs/workbench/contrib/terminal/common/terminal';
7+
import { TERMINAL_VIEW_ID, IShellLaunchConfig, ITerminalConfigHelper, ISpawnExtHostProcessRequest, IStartExtensionTerminalRequest, IAvailableShellsRequest, KEYBINDING_CONTEXT_TERMINAL_FOCUS, KEYBINDING_CONTEXT_TERMINAL_FIND_VISIBLE, KEYBINDING_CONTEXT_TERMINAL_IS_OPEN, KEYBINDING_CONTEXT_TERMINAL_PROCESS_SUPPORTED, ITerminalProcessExtHostProxy, IShellDefinition, LinuxDistro, KEYBINDING_CONTEXT_TERMINAL_SHELL_TYPE, ITerminalLaunchError, ITerminalNativeWindowsDelegate } from 'vs/workbench/contrib/terminal/common/terminal';
88
import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey';
99
import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService';
1010
import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle';
@@ -23,12 +23,13 @@ import { Event, Emitter } from 'vs/base/common/event';
2323
import { URI } from 'vs/base/common/uri';
2424
import { FindReplaceState } from 'vs/editor/contrib/find/findState';
2525
import { escapeNonWindowsPath } from 'vs/workbench/contrib/terminal/common/terminalEnvironment';
26-
import { isWindows, isMacintosh, OperatingSystem } from 'vs/base/common/platform';
26+
import { isWindows, isMacintosh, OperatingSystem, isWeb } from 'vs/base/common/platform';
2727
import { basename } from 'vs/base/common/path';
2828
import { find } from 'vs/base/common/arrays';
2929
import { timeout } from 'vs/base/common/async';
3030
import { IViewsService, ViewContainerLocation, IViewDescriptorService } from 'vs/workbench/common/views';
3131
import { IDisposable } from 'vs/base/common/lifecycle';
32+
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
3233

3334
interface IExtHostReadyEntry {
3435
promise: Promise<void>;
@@ -52,10 +53,12 @@ export class TerminalService implements ITerminalService {
5253
private _activeTabIndex: number;
5354
private _linkProviders: Set<ITerminalExternalLinkProvider> = new Set();
5455
private _linkProviderDisposables: Map<ITerminalExternalLinkProvider, IDisposable[]> = new Map();
56+
private _processSupportContextKey: IContextKey<boolean>;
5557

5658
public get activeTabIndex(): number { return this._activeTabIndex; }
5759
public get terminalInstances(): ITerminalInstance[] { return this._terminalInstances; }
5860
public get terminalTabs(): ITerminalTab[] { return this._terminalTabs; }
61+
public get isProcessSupportRegistered(): boolean { return !!this._processSupportContextKey.get(); }
5962

6063
private _configHelper: TerminalConfigHelper;
6164
private _terminalContainer: HTMLElement | undefined;
@@ -91,6 +94,8 @@ export class TerminalService implements ITerminalService {
9194
public get onTabDisposed(): Event<ITerminalTab> { return this._onTabDisposed.event; }
9295
private readonly _onRequestAvailableShells = new Emitter<IAvailableShellsRequest>();
9396
public get onRequestAvailableShells(): Event<IAvailableShellsRequest> { return this._onRequestAvailableShells.event; }
97+
private readonly _onDidRegisterProcessSupport = new Emitter<void>();
98+
public get onDidRegisterProcessSupport(): Event<void> { return this._onDidRegisterProcessSupport.event; }
9499

95100
constructor(
96101
@IContextKeyService private _contextKeyService: IContextKeyService,
@@ -103,7 +108,8 @@ export class TerminalService implements ITerminalService {
103108
@IQuickInputService private _quickInputService: IQuickInputService,
104109
@IConfigurationService private _configurationService: IConfigurationService,
105110
@IViewsService private _viewsService: IViewsService,
106-
@IViewDescriptorService private readonly _viewDescriptorService: IViewDescriptorService
111+
@IViewDescriptorService private readonly _viewDescriptorService: IViewDescriptorService,
112+
@IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService
107113
) {
108114
this._activeTabIndex = 0;
109115
this._isShuttingDown = false;
@@ -121,7 +127,9 @@ export class TerminalService implements ITerminalService {
121127
});
122128
this.onInstanceLinksReady(instance => this._setInstanceLinkProviders(instance));
123129

124-
this._handleContextKeys();
130+
this._handleInstanceContextKeys();
131+
this._processSupportContextKey = KEYBINDING_CONTEXT_TERMINAL_PROCESS_SUPPORTED.bindTo(this._contextKeyService);
132+
this._processSupportContextKey.set(!isWeb || this._remoteAgentService.getConnection() !== null);
125133
}
126134

127135
public setNativeWindowsDelegate(delegate: ITerminalNativeWindowsDelegate): void {
@@ -132,13 +140,11 @@ export class TerminalService implements ITerminalService {
132140
this._configHelper.setLinuxDistro(linuxDistro);
133141
}
134142

135-
private _handleContextKeys(): void {
143+
private _handleInstanceContextKeys(): void {
136144
const terminalIsOpenContext = KEYBINDING_CONTEXT_TERMINAL_IS_OPEN.bindTo(this._contextKeyService);
137-
138145
const updateTerminalContextKeys = () => {
139146
terminalIsOpenContext.set(this.terminalInstances.length > 0);
140147
};
141-
142148
this.onInstancesChanged(() => updateTerminalContextKeys());
143149
}
144150

@@ -411,6 +417,14 @@ export class TerminalService implements ITerminalService {
411417
instance.addDisposable(instance.onFocus(this._onActiveInstanceChanged.fire, this._onActiveInstanceChanged));
412418
}
413419

420+
public registerProcessSupport(isSupported: boolean): void {
421+
if (!isSupported) {
422+
return;
423+
}
424+
this._processSupportContextKey.set(isSupported);
425+
this._onDidRegisterProcessSupport.fire();
426+
}
427+
414428
public registerLinkProvider(linkProvider: ITerminalExternalLinkProvider): IDisposable {
415429
const disposables: IDisposable[] = [];
416430
this._linkProviders.add(linkProvider);

src/vs/workbench/contrib/terminal/browser/terminalView.ts

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import { URI } from 'vs/base/common/uri';
1919
import { TERMINAL_BACKGROUND_COLOR, TERMINAL_BORDER_COLOR } from 'vs/workbench/contrib/terminal/common/terminalColorRegistry';
2020
import { DataTransfers } from 'vs/base/browser/dnd';
2121
import { INotificationService, IPromptChoice, Severity } from 'vs/platform/notification/common/notification';
22-
import { IStorageService } from 'vs/platform/storage/common/storage';
2322
import { ITerminalService } from 'vs/workbench/contrib/terminal/browser/terminal';
2423
import { BrowserFeatures } from 'vs/base/browser/canIUse';
2524
import { ViewPane, IViewPaneOptions } from 'vs/workbench/browser/parts/views/viewPaneContainer';
@@ -56,14 +55,25 @@ export class TerminalViewPane extends ViewPane {
5655
@IThemeService protected readonly themeService: IThemeService,
5756
@ITelemetryService telemetryService: ITelemetryService,
5857
@INotificationService private readonly _notificationService: INotificationService,
59-
@IStorageService storageService: IStorageService,
6058
@IOpenerService openerService: IOpenerService,
6159
) {
6260
super(options, keybindingService, _contextMenuService, configurationService, contextKeyService, viewDescriptorService, _instantiationService, openerService, themeService, telemetryService);
61+
this._terminalService.onDidRegisterProcessSupport(() => {
62+
if (this._actions) {
63+
for (const action of this._actions) {
64+
action.enabled = true;
65+
}
66+
}
67+
this._onDidChangeViewWelcomeState.fire();
68+
});
6369
}
6470

6571
protected renderBody(container: HTMLElement): void {
6672
super.renderBody(container);
73+
if (this.shouldShowWelcome()) {
74+
return;
75+
}
76+
6777
this._parentDomElement = container;
6878
dom.addClass(this._parentDomElement, 'integrated-terminal');
6979
this._fontStyleElement = document.createElement('style');
@@ -120,6 +130,10 @@ export class TerminalViewPane extends ViewPane {
120130

121131
protected layoutBody(height: number, width: number): void {
122132
super.layoutBody(height, width);
133+
if (this.shouldShowWelcome()) {
134+
return;
135+
}
136+
123137
this._bodyDimensions.width = width;
124138
this._bodyDimensions.height = height;
125139
this._terminalService.terminalTabs.forEach(t => t.layout(width, height));
@@ -138,9 +152,12 @@ export class TerminalViewPane extends ViewPane {
138152
this._splitTerminalAction,
139153
this._instantiationService.createInstance(KillTerminalAction, KillTerminalAction.ID, KillTerminalAction.PANEL_LABEL)
140154
];
141-
this._actions.forEach(a => {
142-
this._register(a);
143-
});
155+
for (const action of this._actions) {
156+
if (!this._terminalService.isProcessSupportRegistered) {
157+
action.enabled = false;
158+
}
159+
this._register(action);
160+
}
144161
}
145162
return this._actions;
146163
}
@@ -180,18 +197,15 @@ export class TerminalViewPane extends ViewPane {
180197
}
181198

182199
public getActionViewItem(action: Action): IActionViewItem | undefined {
183-
if (action.id === SwitchTerminalAction.ID) {
200+
if (action.id === SwitchTerminalAction.ID && this._terminalService.isProcessSupportRegistered) {
184201
return this._instantiationService.createInstance(SwitchTerminalActionViewItem, action);
185202
}
186203

187204
return super.getActionViewItem(action);
188205
}
189206

190207
public focus(): void {
191-
const activeInstance = this._terminalService.getActiveInstance();
192-
if (activeInstance) {
193-
activeInstance.focusWhenReady(true);
194-
}
208+
this._terminalService.getActiveInstance()?.focusWhenReady(true);
195209
}
196210

197211
public focusFindWidget() {
@@ -331,9 +345,11 @@ export class TerminalViewPane extends ViewPane {
331345
theme = this.themeService.getColorTheme();
332346
}
333347

334-
if (this._findWidget) {
335-
this._findWidget.updateTheme(theme);
336-
}
348+
this._findWidget?.updateTheme(theme);
349+
}
350+
351+
shouldShowWelcome(): boolean {
352+
return !this._terminalService.isProcessSupportRegistered;
337353
}
338354
}
339355

src/vs/workbench/contrib/terminal/common/terminal.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { OperatingSystem } from 'vs/base/common/platform';
1212
import { IEnvironmentVariableInfo } from 'vs/workbench/contrib/terminal/common/environmentVariable';
1313
import { IExtensionPointDescriptor } from 'vs/workbench/services/extensions/common/extensionsRegistry';
1414

15-
export const TERMINAL_VIEW_ID = 'workbench.panel.terminal';
15+
export const TERMINAL_VIEW_ID = 'terminal';
1616

1717
/** A context key that is set when there is at least one opened integrated terminal. */
1818
export const KEYBINDING_CONTEXT_TERMINAL_IS_OPEN = new RawContextKey<boolean>('terminalIsOpen', false);
@@ -46,6 +46,8 @@ export const KEYBINDING_CONTEXT_TERMINAL_FIND_FOCUSED = new RawContextKey<boolea
4646
/** A context key that is set when the find widget find input in integrated terminal is not focused. */
4747
export const KEYBINDING_CONTEXT_TERMINAL_FIND_INPUT_NOT_FOCUSED = KEYBINDING_CONTEXT_TERMINAL_FIND_INPUT_FOCUSED.toNegated();
4848

49+
export const KEYBINDING_CONTEXT_TERMINAL_PROCESS_SUPPORTED = new RawContextKey<boolean>('terminalProcessSupported', false);
50+
4951
export const IS_WORKSPACE_SHELL_ALLOWED_STORAGE_KEY = 'terminal.integrated.isWorkspaceShellAllowed';
5052
export const NEVER_MEASURE_RENDER_TIME_STORAGE_KEY = 'terminal.integrated.neverMeasureRenderTime';
5153

0 commit comments

Comments
 (0)