未验证 提交 01a874ac 编写于 作者: M Megan Rogge 提交者: GitHub

update default profile in dropdown when set to contributed one (#129619)

上级 762f213a
......@@ -184,6 +184,8 @@ export interface ITerminalService extends ITerminalInstanceHost {
getDefaultInstanceHost(): ITerminalInstanceHost;
getInstanceHost(target: TerminalLocation | undefined): ITerminalInstanceHost;
getFindHost(instance?: ITerminalInstance): ITerminalFindHost;
getDefaultProfileName(): string;
}
/**
......
......@@ -219,7 +219,12 @@ export class TerminalEditor extends EditorPane {
const dropdownActions: IAction[] = [];
const submenuActions: IAction[] = [];
const defaultProfileName = this._terminalProfileResolverService.defaultProfileName;
let defaultProfileName;
try {
defaultProfileName = this._terminalService.getDefaultProfileName();
} catch (e) {
defaultProfileName = this._terminalProfileResolverService.defaultProfileName;
}
for (const p of profiles) {
const isDefault = p.profileName === defaultProfileName;
const options: IMenuActionOptions = {
......@@ -239,19 +244,21 @@ export class TerminalEditor extends EditorPane {
}
for (const contributed of this._terminalContributionService.terminalProfiles) {
dropdownActions.push(new Action(TerminalCommandId.NewWithProfile, contributed.title.replace(/[\n\r\t]/g, ''), undefined, true, () => this._terminalService.createTerminal({
const isDefault = contributed.title === defaultProfileName;
const title = isDefault ? localize('defaultTerminalProfile', "{0} (Default)", contributed.title.replace(/[\n\r\t]/g, '')) : contributed.title.replace(/[\n\r\t]/g, '');
dropdownActions.push(new Action(TerminalCommandId.NewWithProfile, title, undefined, true, () => this._terminalService.createTerminal({
config: {
extensionIdentifier: contributed.extensionIdentifier,
id: contributed.id,
title: contributed.title.replace(/[\n\r\t]/g, '')
title
},
target: TerminalLocation.Editor
})));
submenuActions.push(new Action(TerminalCommandId.NewWithProfile, contributed.title.replace(/[\n\r\t]/g, ''), undefined, true, () => this._terminalService.createTerminal({
submenuActions.push(new Action(TerminalCommandId.NewWithProfile, title, undefined, true, () => this._terminalService.createTerminal({
config: {
extensionIdentifier: contributed.extensionIdentifier,
id: contributed.id,
title: contributed.title.replace(/[\n\r\t]/g, '')
title
},
forceSplit: true,
target: TerminalLocation.Editor
......
......@@ -64,8 +64,10 @@ export class TerminalService implements ITerminalService {
private _processSupportContextKey: IContextKey<boolean>;
private readonly _localTerminalService?: ILocalTerminalService;
private readonly _primaryOffProcessTerminalService?: IOffProcessTerminalService;
private _defaultProfileName?: string;
private _profilesReadyBarrier: AutoOpenBarrier;
private _availableProfiles: ITerminalProfile[] | undefined;
private _contributedProfiles: IExtensionTerminalProfile[] | undefined;
private _configHelper: TerminalConfigHelper;
private _remoteTerminalsInitPromise: Promise<void> | undefined;
private _localTerminalsInitPromise: Promise<void> | undefined;
......@@ -485,8 +487,10 @@ export class TerminalService implements ITerminalService {
private async _refreshAvailableProfiles(): Promise<void> {
const result = await this._detectProfiles();
const profilesChanged = !equals(result, this._availableProfiles);
if (profilesChanged) {
const contributedProfilesChanged = !equals(this._terminalContributionService.terminalProfiles, this._contributedProfiles);
if (profilesChanged || contributedProfilesChanged) {
this._availableProfiles = result;
this._contributedProfiles = Array.from(this._terminalContributionService.terminalProfiles);
this._onDidChangeAvailableProfiles.fire(this._availableProfiles);
this._profilesReadyBarrier.open();
await this._refreshPlatformConfig(result);
......@@ -504,7 +508,15 @@ export class TerminalService implements ITerminalService {
return this._availableProfiles || [];
}
const platform = await this._getPlatformKey();
return this._primaryOffProcessTerminalService?.getProfiles(this._configurationService.getValue(`${TerminalSettingPrefix.Profiles}${platform}`), this._configurationService.getValue(`${TerminalSettingPrefix.DefaultProfile}${platform}`), includeDetectedProfiles);
this._defaultProfileName = this._configurationService.getValue(`${TerminalSettingPrefix.DefaultProfile}${platform}`);
return this._primaryOffProcessTerminalService?.getProfiles(this._configurationService.getValue(`${TerminalSettingPrefix.Profiles}${platform}`), this._defaultProfileName, includeDetectedProfiles);
}
getDefaultProfileName(): string {
if (!this._defaultProfileName) {
throw new Error('no default profile');
}
return this._defaultProfileName;
}
private _onBeforeShutdown(reason: ShutdownReason): boolean | Promise<boolean> {
......
......@@ -232,7 +232,12 @@ export class TerminalViewPane extends ViewPane {
const dropdownActions: IAction[] = [];
const submenuActions: IAction[] = [];
const defaultProfileName = this._terminalProfileResolverService.defaultProfileName;
let defaultProfileName;
try {
defaultProfileName = this._terminalService.getDefaultProfileName();
} catch (e) {
defaultProfileName = this._terminalProfileResolverService.defaultProfileName;
}
for (const p of profiles) {
const isDefault = p.profileName === defaultProfileName;
const options: IMenuActionOptions = {
......@@ -252,19 +257,21 @@ export class TerminalViewPane extends ViewPane {
}
for (const contributed of this._terminalContributionService.terminalProfiles) {
dropdownActions.push(new Action(TerminalCommandId.NewWithProfile, contributed.title.replace(/[\n\r\t]/g, ''), undefined, true, () => this._terminalService.createTerminal({
const isDefault = contributed.title === defaultProfileName;
const title = isDefault ? nls.localize('defaultTerminalProfile', "{0} (Default)", contributed.title.replace(/[\n\r\t]/g, '')) : contributed.title.replace(/[\n\r\t]/g, '');
dropdownActions.push(new Action(TerminalCommandId.NewWithProfile, title, undefined, true, () => this._terminalService.createTerminal({
config: {
extensionIdentifier: contributed.extensionIdentifier,
id: contributed.id,
title: contributed.title.replace(/[\n\r\t]/g, '')
title
},
forceSplit: false
})));
submenuActions.push(new Action(TerminalCommandId.NewWithProfile, contributed.title.replace(/[\n\r\t]/g, ''), undefined, true, () => this._terminalService.createTerminal({
submenuActions.push(new Action(TerminalCommandId.NewWithProfile, title, undefined, true, () => this._terminalService.createTerminal({
config: {
extensionIdentifier: contributed.extensionIdentifier,
id: contributed.id,
title: contributed.title.replace(/[\n\r\t]/g, '')
title
},
forceSplit: true
})));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册