Skip to content

Commit 761fbb0

Browse files
authored
Merge pull request microsoft#268989 from microsoft/tyriar/default_loc
Move term defaultLocation to term config service
2 parents f336aaa + e8963f4 commit 761fbb0

7 files changed

Lines changed: 28 additions & 18 deletions

File tree

src/vs/platform/terminal/common/terminal.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,7 @@ export enum TerminalLocation {
679679
Editor = 2
680680
}
681681

682-
export const enum TerminalLocationString {
682+
export const enum TerminalLocationConfigValue {
683683
TerminalView = 'view',
684684
Editor = 'editor'
685685
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,6 @@ export interface ITerminalService extends ITerminalInstanceHost {
296296
readonly instances: readonly ITerminalInstance[];
297297
/** Gets detached terminal instances created via {@link createDetachedXterm}. */
298298
readonly detachedInstances: Iterable<IDetachedTerminalInstance>;
299-
readonly defaultLocation: TerminalLocation;
300299

301300
readonly isProcessSupportRegistered: boolean;
302301
readonly connectionState: TerminalConnectionState;
@@ -415,6 +414,11 @@ export interface ITerminalConfigurationService {
415414
*/
416415
readonly config: Readonly<ITerminalConfiguration>;
417416

417+
/**
418+
* The default location for terminals.
419+
*/
420+
readonly defaultLocation: TerminalLocation;
421+
418422
/**
419423
* Fires when something within the terminal configuration changes.
420424
*/

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ export function registerTerminalActions() {
299299
title: localize2('workbench.action.terminal.newInActiveWorkspace', 'Create New Terminal (In Active Workspace)'),
300300
run: async (c) => {
301301
if (c.service.isProcessSupportRegistered) {
302-
const instance = await c.service.createTerminal({ location: c.service.defaultLocation });
302+
const instance = await c.service.createTerminal({ location: c.configService.defaultLocation });
303303
if (!instance) {
304304
return;
305305
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { ITerminalConfigurationService, LinuxDistro } from './terminal.js';
1111
import type { IXtermCore } from './xterm-private.js';
1212
import { DEFAULT_BOLD_FONT_WEIGHT, DEFAULT_FONT_WEIGHT, DEFAULT_LETTER_SPACING, DEFAULT_LINE_HEIGHT, FontWeight, ITerminalConfiguration, MAXIMUM_FONT_WEIGHT, MINIMUM_FONT_WEIGHT, MINIMUM_LETTER_SPACING, TERMINAL_CONFIG_SECTION, type ITerminalFont } from '../common/terminal.js';
1313
import { isMacintosh } from '../../../../base/common/platform.js';
14+
import { TerminalLocation, TerminalLocationConfigValue } from '../../../../platform/terminal/common/terminal.js';
1415

1516
// #region TerminalConfigurationService
1617

@@ -22,6 +23,13 @@ export class TerminalConfigurationService extends Disposable implements ITermina
2223
protected _config!: Readonly<ITerminalConfiguration>;
2324
get config() { return this._config; }
2425

26+
get defaultLocation(): TerminalLocation {
27+
if (this.config.defaultLocation === TerminalLocationConfigValue.Editor) {
28+
return TerminalLocation.Editor;
29+
}
30+
return TerminalLocation.Panel;
31+
}
32+
2533
private readonly _onConfigChanged = new Emitter<void>();
2634
get onConfigChanged(): Event<void> { return this._onConfigChanged.event; }
2735

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

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { IContextKey, IContextKeyService } from '../../../../platform/contextkey
2020
import { IDialogService } from '../../../../platform/dialogs/common/dialogs.js';
2121
import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';
2222
import { INotificationService } from '../../../../platform/notification/common/notification.js';
23-
import { ICreateContributedTerminalProfileOptions, IExtensionTerminalProfile, IPtyHostAttachTarget, IRawTerminalInstanceLayoutInfo, IRawTerminalTabLayoutInfo, IShellLaunchConfig, ITerminalBackend, ITerminalLaunchError, ITerminalLogService, ITerminalsLayoutInfo, ITerminalsLayoutInfoById, TerminalExitReason, TerminalLocation, TerminalLocationString, TitleEventSource } from '../../../../platform/terminal/common/terminal.js';
23+
import { ICreateContributedTerminalProfileOptions, IExtensionTerminalProfile, IPtyHostAttachTarget, IRawTerminalInstanceLayoutInfo, IRawTerminalTabLayoutInfo, IShellLaunchConfig, ITerminalBackend, ITerminalLaunchError, ITerminalLogService, ITerminalsLayoutInfo, ITerminalsLayoutInfoById, TerminalExitReason, TerminalLocation, TitleEventSource } from '../../../../platform/terminal/common/terminal.js';
2424
import { formatMessageForTerminal } from '../../../../platform/terminal/common/terminalStrings.js';
2525
import { iconForeground } from '../../../../platform/theme/common/colorRegistry.js';
2626
import { getIconRegistry } from '../../../../platform/theme/common/iconRegistry.js';
@@ -107,8 +107,6 @@ export class TerminalService extends Disposable implements ITerminalService {
107107
return this._reconnectedTerminals.get(reconnectionOwner);
108108
}
109109

110-
get defaultLocation(): TerminalLocation { return this._terminalConfigurationService.config.defaultLocation === TerminalLocationString.Editor ? TerminalLocation.Editor : TerminalLocation.Panel; }
111-
112110
private _activeInstance: ITerminalInstance | undefined;
113111
get activeInstance(): ITerminalInstance | undefined {
114112
// Check if either an editor or panel terminal has focus and return that, regardless of the
@@ -170,7 +168,6 @@ export class TerminalService extends Disposable implements ITerminalService {
170168
@IInstantiationService private _instantiationService: IInstantiationService,
171169
@IRemoteAgentService private _remoteAgentService: IRemoteAgentService,
172170
@IConfigurationService private readonly _configurationService: IConfigurationService,
173-
@ITerminalConfigurationService private readonly _terminalConfigService: ITerminalConfigurationService,
174171
@IWorkbenchEnvironmentService private readonly _environmentService: IWorkbenchEnvironmentService,
175172
@ITerminalConfigurationService private readonly _terminalConfigurationService: ITerminalConfigurationService,
176173
@ITerminalEditorService private readonly _terminalEditorService: ITerminalEditorService,
@@ -203,7 +200,7 @@ export class TerminalService extends Disposable implements ITerminalService {
203200
// down. When shutting down the panel is locked in place so that it is restored upon next
204201
// launch.
205202
this._register(this._terminalGroupService.onDidChangeActiveInstance(instance => {
206-
if (!instance && !this._isShuttingDown && this._terminalConfigService.config.hideOnLastClosed) {
203+
if (!instance && !this._isShuttingDown && this._terminalConfigurationService.config.hideOnLastClosed) {
207204
this._terminalGroupService.hidePanel();
208205
}
209206
if (instance?.shellType) {
@@ -246,25 +243,26 @@ export class TerminalService extends Disposable implements ITerminalService {
246243
const keyMods: IKeyMods | undefined = result.keyMods;
247244
if (type === 'createInstance') {
248245
const activeInstance = this.getDefaultInstanceHost().activeInstance;
246+
const defaultLocation = this._terminalConfigurationService.defaultLocation;
249247
let instance;
250248

251249
if (result.config && 'id' in result?.config) {
252250
await this.createContributedTerminalProfile(result.config.extensionIdentifier, result.config.id, {
253251
icon: result.config.options?.icon,
254252
color: result.config.options?.color,
255-
location: !!(keyMods?.alt && activeInstance) ? { splitActiveTerminal: true } : this.defaultLocation
253+
location: !!(keyMods?.alt && activeInstance) ? { splitActiveTerminal: true } : defaultLocation
256254
});
257255
return;
258256
} else if (result.config && 'profileName' in result.config) {
259257
if (keyMods?.alt && activeInstance) {
260258
// create split, only valid if there's an active instance
261259
instance = await this.createTerminal({ location: { parentTerminal: activeInstance }, config: result.config, cwd });
262260
} else {
263-
instance = await this.createTerminal({ location: this.defaultLocation, config: result.config, cwd });
261+
instance = await this.createTerminal({ location: defaultLocation, config: result.config, cwd });
264262
}
265263
}
266264

267-
if (instance && this.defaultLocation !== TerminalLocation.Editor) {
265+
if (instance && defaultLocation !== TerminalLocation.Editor) {
268266
this._terminalGroupService.showPanel(true);
269267
this.setActiveInstance(instance);
270268
return instance;
@@ -912,7 +910,7 @@ export class TerminalService extends Disposable implements ITerminalService {
912910
}
913911

914912
getDefaultInstanceHost(): ITerminalInstanceHost {
915-
if (this.defaultLocation === TerminalLocation.Editor) {
913+
if (this._terminalConfigurationService.defaultLocation === TerminalLocation.Editor) {
916914
return this._terminalEditorService;
917915
}
918916
return this._terminalGroupService;
@@ -1003,7 +1001,7 @@ export class TerminalService extends Disposable implements ITerminalService {
10031001
}
10041002

10051003
this._evaluateLocalCwd(shellLaunchConfig);
1006-
const location = await this.resolveLocation(options?.location) || this.defaultLocation;
1004+
const location = await this.resolveLocation(options?.location) || this._terminalConfigurationService.defaultLocation;
10071005
const parent = await this._getSplitParent(options?.location);
10081006
this._terminalHasBeenCreated.set(true);
10091007
this._extensionService.activateByEvent('onTerminal:*');
@@ -1070,7 +1068,7 @@ export class TerminalService extends Disposable implements ITerminalService {
10701068
if (!parent) {
10711069
throw new Error('Cannot split without an active instance');
10721070
}
1073-
shellLaunchConfig.cwd = await getCwdForSplit(parent, this._workspaceContextService.getWorkspace().folders, this._commandService, this._terminalConfigService);
1071+
shellLaunchConfig.cwd = await getCwdForSplit(parent, this._workspaceContextService.getWorkspace().folders, this._commandService, this._terminalConfigurationService);
10741072
}
10751073
}
10761074
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import * as nls from '../../../../nls.js';
1414
import { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';
1515
import { ISerializedCommandDetectionCapability, ITerminalCapabilityStore } from '../../../../platform/terminal/common/capabilities/capabilities.js';
1616
import { IMergedEnvironmentVariableCollection } from '../../../../platform/terminal/common/environmentVariable.js';
17-
import { ICreateContributedTerminalProfileOptions, IExtensionTerminalProfile, IFixedTerminalDimensions, ITerminalLaunchResult, IProcessDataEvent, IProcessProperty, IProcessPropertyMap, IProcessReadyEvent, IProcessReadyWindowsPty, IShellLaunchConfig, ITerminalBackend, ITerminalContributions, ITerminalEnvironment, ITerminalLaunchError, ITerminalProfile, ITerminalProfileObject, ITerminalTabAction, ProcessPropertyType, TerminalIcon, TerminalLocationString, TitleEventSource } from '../../../../platform/terminal/common/terminal.js';
17+
import { ICreateContributedTerminalProfileOptions, IExtensionTerminalProfile, IFixedTerminalDimensions, ITerminalLaunchResult, IProcessDataEvent, IProcessProperty, IProcessPropertyMap, IProcessReadyEvent, IProcessReadyWindowsPty, IShellLaunchConfig, ITerminalBackend, ITerminalContributions, ITerminalEnvironment, ITerminalLaunchError, ITerminalProfile, ITerminalProfileObject, ITerminalTabAction, ProcessPropertyType, TerminalIcon, TerminalLocationConfigValue, TitleEventSource } from '../../../../platform/terminal/common/terminal.js';
1818
import { AccessibilityCommandId } from '../../accessibility/common/accessibilityCommands.js';
1919
import { IEnvironmentVariableInfo } from './environmentVariable.js';
2020
import { IExtensionPointDescriptor } from '../../../services/extensions/common/extensionsRegistry.js';
@@ -196,7 +196,7 @@ export interface ITerminalConfiguration {
196196
separator: string;
197197
};
198198
bellDuration: number;
199-
defaultLocation: TerminalLocationString;
199+
defaultLocation: TerminalLocationConfigValue;
200200
customGlyphs: boolean;
201201
persistentSessionReviveProcess: 'onExit' | 'onExitAndWindowClose' | 'never';
202202
ignoreProcessNames: string[];

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { localize } from '../../../../nls.js';
1111
import { ConfigurationScope, Extensions, IConfigurationRegistry, type IConfigurationPropertySchema } from '../../../../platform/configuration/common/configurationRegistry.js';
1212
import product from '../../../../platform/product/common/product.js';
1313
import { Registry } from '../../../../platform/registry/common/platform.js';
14-
import { TerminalLocationString, TerminalSettingId } from '../../../../platform/terminal/common/terminal.js';
14+
import { TerminalLocationConfigValue, TerminalSettingId } from '../../../../platform/terminal/common/terminal.js';
1515
import { terminalColorSchema, terminalIconSchema } from '../../../../platform/terminal/common/terminalPlatformConfiguration.js';
1616
import { ConfigurationKeyValuePairs, IConfigurationMigrationRegistry, Extensions as WorkbenchExtensions } from '../../../common/configuration.js';
1717
import { terminalContribConfiguration, TerminalContribSettingId } from '../terminalContribExports.js';
@@ -115,7 +115,7 @@ const terminalConfiguration: IStringDictionary<IConfigurationPropertySchema> = {
115115
},
116116
[TerminalSettingId.DefaultLocation]: {
117117
type: 'string',
118-
enum: [TerminalLocationString.Editor, TerminalLocationString.TerminalView],
118+
enum: [TerminalLocationConfigValue.Editor, TerminalLocationConfigValue.TerminalView],
119119
enumDescriptions: [
120120
localize('terminal.integrated.defaultLocation.editor', "Create terminals in the editor"),
121121
localize('terminal.integrated.defaultLocation.view', "Create terminals in the terminal view")

0 commit comments

Comments
 (0)