Skip to content

Improve terminal.integrated.suggest.providers UX #254869

@Tyriar

Description

@Tyriar

Can we have a native settings UI widget?

Image

We should also have all suggest providers show up in the settings.json here:

Image

It should be dynamic and update as extensions are enabled or disabled. Here's an example of how to do that by re-registering the setting:

let defaultProfilesConfiguration: IConfigurationNode | undefined;
export function registerTerminalDefaultProfileConfiguration(detectedProfiles?: { os: OperatingSystem; profiles: ITerminalProfile[] }, extensionContributedProfiles?: readonly IExtensionTerminalProfile[]) {
const registry = Registry.as<IConfigurationRegistry>(Extensions.Configuration);
let profileEnum;
if (detectedProfiles) {
profileEnum = createProfileSchemaEnums(detectedProfiles?.profiles, extensionContributedProfiles);
}
const oldDefaultProfilesConfiguration = defaultProfilesConfiguration;
defaultProfilesConfiguration = {
id: 'terminal',
order: 100,
title: localize('terminalIntegratedConfigurationTitle', "Integrated Terminal"),
type: 'object',
properties: {
[TerminalSettingId.DefaultProfileLinux]: {
restricted: true,
markdownDescription: localize('terminal.integrated.defaultProfile.linux', "The default terminal profile on Linux."),
type: ['string', 'null'],
default: null,
enum: detectedProfiles?.os === OperatingSystem.Linux ? profileEnum?.values : undefined,
markdownEnumDescriptions: detectedProfiles?.os === OperatingSystem.Linux ? profileEnum?.markdownDescriptions : undefined
},
[TerminalSettingId.DefaultProfileMacOs]: {
restricted: true,
markdownDescription: localize('terminal.integrated.defaultProfile.osx', "The default terminal profile on macOS."),
type: ['string', 'null'],
default: null,
enum: detectedProfiles?.os === OperatingSystem.Macintosh ? profileEnum?.values : undefined,
markdownEnumDescriptions: detectedProfiles?.os === OperatingSystem.Macintosh ? profileEnum?.markdownDescriptions : undefined
},
[TerminalSettingId.DefaultProfileWindows]: {
restricted: true,
markdownDescription: localize('terminal.integrated.defaultProfile.windows', "The default terminal profile on Windows."),
type: ['string', 'null'],
default: null,
enum: detectedProfiles?.os === OperatingSystem.Windows ? profileEnum?.values : undefined,
markdownEnumDescriptions: detectedProfiles?.os === OperatingSystem.Windows ? profileEnum?.markdownDescriptions : undefined
},
}
};
registry.updateConfigurations({ add: [defaultProfilesConfiguration], remove: oldDefaultProfilesConfiguration ? [oldDefaultProfilesConfiguration] : [] });
}

Image

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions