Change:
Open default settings JSON: ! Version: 1.67.0-insider (user setup) Commit: Date: 2022-03-31T11:00:49.798Z Electron: 17.2.0 Chromium: 98.0.4758.109 16.13.0 V8: 9.8.177.11-electron.0 OS: Windows_NT x64 10.0.
windows and linux issue only - works on mac <img width="481" alt="Screen Shot 2022-03-31 at 11 16 55 AM" src="https://user-"
but not in the settings editor actually
I think it happens on mac too, was originally reported for .osx
any idea why null is not accepted here? We set null as a valid type along side enum/string:
any thoughts as I know you did some work related to enum settings?
Not sure, but I get a mysterious result in the suggestions: !
yeah that should be
If enums are defined, you need to add as a valid value to the enums as well
I believe null is already one of the enum values
The completion values are composed of enum, default and more. The validation only looks at at enum values. So I'm quite sure the num values don't contain null, as the hover shows: !

Discussion:
import { Codicon } from 'vs/base/common/codicons'; import { URI, UriComponents } from 'vs/base/common/uri'; <ins> import { localize } from 'vs/nls'; </ins> import { IExtensionTerminalProfile, ITerminalProfile, TerminalIcon } from 'vs/platform/terminal/common/terminal'; import { ThemeIcon } from 'vs/platform/theme/common/themeService'; export function createProfileSchemaEnums(detectedProfiles: ITerminalProfile[], extensionProfiles?: readonly IExtensionTerminalProfile[]): { <del> values: string[] | undefined; </del> <ins> values: (string | null)[] | undefined; </ins> markdownDescriptions: string[] | undefined; } { <del> const result = detectedProfiles.map(e => { </del> <ins> const result: { name: string | null; description: string }[] = [{ name: null, description: localize('terminalAutomaticProfile', 'Automatically detect the default') }]; result.push(...detectedProfiles.map(e => { </ins> return { name: e.profileName, description: createProfileDescription(e) }; <del> }); </del> <ins> })); </ins> if (extensionProfiles) { result.push(...extensionProfiles.map(extensionProfile => { return {

suite('createProfileSchemaEnums', () => { test('should return an empty array when there are no profiles', () => { deepStrictEqual(createProfileSchemaEnums([]), { <del> values: [], markdownDescriptions: [] </del> <ins> values: [ null ], markdownDescriptions: [ 'Automatically detect the default' ] </ins> }); }); test('should return a single entry when there is one profile', () => {

isDefault: true }; deepStrictEqual(createProfileSchemaEnums([profile]), { <del> values: ['name'], markdownDescriptions: ['$(terminal) namen- path: path'] </del> <ins> values: [ null, 'name' ], markdownDescriptions: [ 'Automatically detect the default', '$(terminal) namen- path: path' ] </ins> }); }); test('should show all profile information', () => {

overrideName: true }; deepStrictEqual(createProfileSchemaEnums([profile]), { <del> values: ['name'], markdownDescriptions: [`$(zap) namen- path: pathn- args: ['a','b']n- overrideName: truen- color: terminal.ansiRedn- env: {"c":"d","e":"f"}`] </del> <ins> values: [ null, 'name' ], markdownDescriptions: [ 'Automatically detect the default', `$(zap) namen- path: pathn- args: ['a','b']n- overrideName: truen- color: terminal.ansiRedn- env: {"c":"d","e":"f"}` ] </ins> }); }); test('should return a multiple entries when there are multiple profiles', () => {

isDefault: false }; deepStrictEqual(createProfileSchemaEnums([profile1, profile2]), { <del> values: ['name', 'foo'], </del> <ins> values: [ null, 'name', 'foo' ], </ins> markdownDescriptions: [ <ins> 'Automatically detect the default', </ins> '$(terminal) namen- path: path', '$(terminal) foon- path: bar' ]