Change:
Currently, the setting doesn't render in the Settings editor, because the Settings editor cannot handle settings with types. The current accepted values are of the form Questions: is the difference between and or and for each field? just a shorthand for setting each field to ? If we can change the setting configuration so that it is just an object with fields "strings", "comments", and "other", and the value for each field is an enum of options , then the setting can render in the Settings editor UI. Along with changing the type over, we'll have to migrate the setting value for users still using the old setting value. I believe Emmet has example code for this process for the setting .
Yeah, there is a lot of history: it started with a simple boolean, become an object with booleans, and it now an object with enum values. When working on I tried to simplify the setting but without success, I couldn't get the editor to render this... I'll try to simplify the setting to be a simple object with just (string) enum values
I have started on this, the setting is now just an but the settings editor still doesn't show it. What is missing?
I don't believe we currently support anyOf bool string, still. Are you expecting it to render as an enum like true, false, "on", "inline", "off"? Also, needs to be set to .
Cool. Thanks! That did make the difference here <img width="562" alt="Screenshot 2022-05-05 at 09 22 08" src="https://user-"

Discussion:
write('suggest.filteredTypes', undefined); } }); <ins> registerEditorSettingMigration('quickSuggestions', (input, read, write) => { if (typeof input === 'boolean') { const value = input ? 'on' : 'off'; const newValue = { comments: value, strings: value, other: value }; write('quickSuggestions', newValue); } }); </ins>

enumDescriptions: [nls.localize('on', "Quick suggestions show inside the suggest widget"), nls.localize('inline', "Quick suggestions show as ghost text"), nls.localize('off', "Quick suggestions are disabled")] } ]; <del> super( EditorOption.quickSuggestions, 'quickSuggestions', defaults, { anyOf: [{ type: 'boolean', }, { type: 'object', properties: { strings: { anyOf: types, default: defaults.strings, description: nls.localize('quickSuggestions.strings', "Enable quick suggestions inside strings.") }, comments: { anyOf: types, default: defaults.comments, description: nls.localize('quickSuggestions.comments', "Enable quick suggestions inside comments.") }, other: { anyOf: types, default: defaults.other, description: nls.localize('quickSuggestions.other', "Enable quick suggestions outside of strings and comments.") }, } }], default: defaults, markdownDescription: nls.localize('quickSuggestions', "Controls whether suggestions should automatically show up while typing.") } ); </del> <ins> super(EditorOption.quickSuggestions, 'quickSuggestions', defaults, { type: 'object', additionalProperties: false, properties: { strings: { anyOf: types, default: defaults.strings, description: nls.localize('quickSuggestions.strings', "Enable quick suggestions inside strings.") }, comments: { anyOf: types, default: defaults.comments, description: nls.localize('quickSuggestions.comments', "Enable quick suggestions inside comments.") }, other: { anyOf: types, default: defaults.other, description: nls.localize('quickSuggestions.other', "Enable quick suggestions outside of strings and comments.") }, }, default: defaults, markdownDescription: nls.localize('quickSuggestions', "Controls whether suggestions should automatically show up while typing. This can be controlled for typing in comments, strings, and other code. Quick suggestion can be configured to show as ghost text or with the suggest widget.") }); </ins> this.defaultValue = defaults; }

} }); }); <ins> test('quickSuggestions', () => { assert.deepStrictEqual(migrate({ quickSuggestions: true }), { quickSuggestions: { comments: 'on', strings: 'on', other: 'on' } }); assert.deepStrictEqual(migrate({ quickSuggestions: false }), { quickSuggestions: { comments: 'off', strings: 'off', other: 'off' } }); assert.deepStrictEqual(migrate({ quickSuggestions: { comments: 'on', strings: 'off' } }), { quickSuggestions: { comments: 'on', strings: 'off' } }); }); </ins> test('hover', () => { assert.deepStrictEqual(migrate({ hover: true }), { hover: { enabled: true } }); assert.deepStrictEqual(migrate({ hover: false }), { hover: { enabled: false } });