move splitActiveTerminal into location

This commit is contained in:
meganrogge 2021-08-23 09:49:46 -07:00
parent de1adedfaa
commit 1c324f820b
No known key found for this signature in database
GPG key ID: 3155C8B2F0428C81
4 changed files with 12 additions and 11 deletions

View file

@ -394,8 +394,7 @@ export interface IShellLaunchConfig {
export interface ICreateContributedTerminalProfileOptions {
icon?: URI | string | { light: URI, dark: URI };
color?: string;
splitActiveTerminal?: boolean;
location?: TerminalLocation | { viewColumn: number, preserveState?: boolean };
location?: TerminalLocation | { viewColumn: number, preserveState?: boolean } | { splitActiveTerminal: boolean };
}
export enum TerminalLocation {

View file

@ -52,7 +52,10 @@ export interface ITerminalInternalOptions {
isFeatureTerminal?: boolean;
useShellEnvironment?: boolean;
resolvedExtHostIdentifier?: ExtHostTerminalIdentifier;
splitActiveTerminal?: boolean;
/**
* This location is different from the API location because it can include splitActiveTerminal,
* a property we resolve internally
*/
location?: TerminalLocation | { viewColumn: number, preserveState?: boolean } | { splitActiveTerminal: boolean };
}

View file

@ -38,9 +38,9 @@ export class ExtHostTerminalService extends BaseExtHostTerminalService {
internalOptions.resolvedExtHostIdentifier = parentExtHostTerminal._id;
}
}
} else if (!internalOptions.splitActiveTerminal && options.location === TerminalLocation.Editor || options.location === TerminalLocation.Panel) {
} else if (options.location === TerminalLocation.Editor || options.location === TerminalLocation.Panel) {
internalOptions.location = options.location;
} else if (internalOptions.splitActiveTerminal) {
} else if (internalOptions.location && typeof internalOptions.location === 'object' && 'splitActiveTerminal' in internalOptions.location) {
internalOptions.location = { splitActiveTerminal: true };
}
return internalOptions;

View file

@ -949,10 +949,9 @@ export class TerminalService implements ITerminalService {
if ('id' in value.profile) {
await this._createContributedTerminalProfile(value.profile.extensionIdentifier, value.profile.id, {
splitActiveTerminal: !!(keyMods?.alt && activeInstance),
icon: value.profile.icon,
color: value.profile.color,
location: this.defaultLocation
location: !!(keyMods?.alt && activeInstance) ? { splitActiveTerminal: true } : this.defaultLocation
});
return;
} else {
@ -1158,14 +1157,14 @@ export class TerminalService implements ITerminalService {
// Launch the contributed profile
if (contributedProfile) {
const resolvedLocation = this._resolveLocation(options?.location);
const split = typeof options?.location === 'object' && 'splitActiveTerminal' in options.location ? options.location.splitActiveTerminal : false;
const splitActiveTerminal = typeof options?.location === 'object' && 'splitActiveTerminal' in options.location ? options.location.splitActiveTerminal : false;
const location = splitActiveTerminal ? resolvedLocation === TerminalLocation.Editor ? { viewColumn: SIDE_GROUP } : { splitActiveTerminal: true } : resolvedLocation;
await this._createContributedTerminalProfile(contributedProfile.extensionIdentifier, contributedProfile.id, {
icon: contributedProfile.icon,
color: contributedProfile.color,
splitActiveTerminal: split,
location: resolvedLocation === TerminalLocation.Editor && split ? { viewColumn: SIDE_GROUP } : resolvedLocation
location
});
const instanceHost = this._resolveLocation(options?.location) === TerminalLocation.Editor ? this._terminalEditorService : this._terminalGroupService;
const instanceHost = resolvedLocation === TerminalLocation.Editor ? this._terminalEditorService : this._terminalGroupService;
const instance = instanceHost.instances[instanceHost.instances.length - 1];
await instance.focusWhenReady();
return instance;