This commit is contained in:
meganrogge
2021-08-20 15:56:33 -07:00
parent be7f48a751
commit c1427cc329
6 changed files with 20 additions and 9 deletions

View File

@@ -53,6 +53,7 @@ export interface ITerminalInternalOptions {
useShellEnvironment?: boolean;
resolvedExtHostIdentifier?: ExtHostTerminalIdentifier;
splitActiveTerminal?: boolean;
location?: TerminalLocation | { viewColumn: number, preserveState?: boolean } | { splitActiveTerminal: boolean };
}
export const IExtHostTerminalService = createDecorator<IExtHostTerminalService>('IExtHostTerminalService');
@@ -147,7 +148,7 @@ export class ExtHostTerminal {
isFeatureTerminal: withNullAsUndefined(internalOptions?.isFeatureTerminal),
isExtensionOwnedTerminal: true,
useShellEnvironment: withNullAsUndefined(internalOptions?.useShellEnvironment),
location: this._serializeParentTerminal(options.location, internalOptions?.resolvedExtHostIdentifier, internalOptions?.splitActiveTerminal)
location: internalOptions?.location || this._serializeParentTerminal(options.location, internalOptions?.resolvedExtHostIdentifier, internalOptions?.location)
});
}
@@ -170,11 +171,11 @@ export class ExtHostTerminal {
return this._id;
}
private _serializeParentTerminal(location?: TerminalLocation | vscode.TerminalEditorLocationOptions | vscode.TerminalSplitLocationOptions, parentTerminal?: ExtHostTerminalIdentifier, splitActiveTerminal?: boolean): TerminalLocation | vscode.TerminalEditorLocationOptions | { parentTerminal: ExtHostTerminalIdentifier } | { splitActiveTerminal: boolean } | undefined {
private _serializeParentTerminal(location?: TerminalLocation | vscode.TerminalEditorLocationOptions | vscode.TerminalSplitLocationOptions | { splitActiveTerminal: boolean }, parentTerminal?: ExtHostTerminalIdentifier, internalLocation?: TerminalLocation | { viewColumn: number, preserveState?: boolean } | { splitActiveTerminal: boolean }): TerminalLocation | vscode.TerminalEditorLocationOptions | { parentTerminal: ExtHostTerminalIdentifier } | { splitActiveTerminal: boolean, location?: TerminalLocation } | vscode.TerminalEditorLocationOptions | undefined {
if (typeof location === 'object' && 'parentTerminal' in location) {
return parentTerminal ? { parentTerminal } : undefined;
} else if (splitActiveTerminal) {
return { splitActiveTerminal: true };
} else if (internalLocation) {
location = internalLocation;
}
return location;
}