Code change:
private start(): void { this.textModelResolverService.registerTextModelContentProvider('vscode', { <del> provideTextContent: (uri: URI): Promise<ITextModel | null> | null => { </del> <ins> provideTextContent: async (uri: URI): Promise<ITextModel | null> => { </ins> if (uri.scheme !== 'vscode') { return null; } if (uri.authority === 'schemas') { <del> const schemaModel = this.getSchemaModel(uri); if (schemaModel) { return Promise.resolve(schemaModel); } </del> <ins> return this.getSchemaModel(uri); </ins> } <del> return Promise.resolve(this.preferencesService.resolveModel(uri)); </del> <ins> return this.preferencesService.resolveModel(uri); </ins> } }); } <del> private getSchemaModel(uri: URI): ITextModel | null { let schema = schemaRegistry.getSchemaContributions().schemas[uri.toString()]; if (schema) { const modelContent = JSON.stringify(schema); const languageSelection = this.languageService.createById('jsonc'); const model = this.modelService.createModel(modelContent, languageSelection, uri); const disposables = new DisposableStore(); disposables.add(schemaRegistry.onDidChangeSchema(schemaUri => { if (schemaUri === uri.toString()) { schema = schemaRegistry.getSchemaContributions().schemas[uri.toString()]; model.setValue(JSON.stringify(schema)); } })); disposables.add(model.onWillDispose(() => disposables.dispose())); return model; } return null; </del> <ins> private getSchemaModel(uri: URI): ITextModel { let schema = schemaRegistry.getSchemaContributions().schemas[uri.toString()] ?? {} /* Use empty schema if not yet registered */; const modelContent = JSON.stringify(schema); const languageSelection = this.languageService.createById('jsonc'); const model = this.modelService.createModel(modelContent, languageSelection, uri); const disposables = new DisposableStore(); disposables.add(schemaRegistry.onDidChangeSchema(schemaUri => { if (schemaUri === uri.toString()) { schema = schemaRegistry.getSchemaContributions().schemas[uri.toString()]; model.setValue(JSON.stringify(schema)); } })); disposables.add(model.onWillDispose(() => disposables.dispose())); return model; </ins> } dispose(): void {

Related discussion:
text: For example, put at the top of your and save the file. You will have to toggle and save this key every time you start VSCode. A detailed set of steps for doing this can be inspected at the end of this comment. If you use the VSCode extension , you can set up a hotfix keybind (like in this case), and press the keybind twice every time you restart VSCode. Or, just never restart VSCode until the patch drops! <details<summarydetails</summary<pI can confirm that setting allows hover hints and completion to function again, e.g. in VSCode's own modification. However, this workaround throws out all JSON linting and reporting in the "Problems" pane, so it's sort of the nuclear option. This issue just cropped up for me in the past few days, so it may be a regression associated with the latest release? After further investigation, I find that poking any settings key in restores proper autocomplete/hover in VSCode's until next VSCode restart. But a key must be poked after every restart. Here's a rundown: all tree of settings keys are initially at their defaults, e.g. none of these keys are explicitly specified in any of your (maybe unnecessary, but this is my starting state). VSCode (e.g. with ). Navigate to your user . The following warning presents in the Problems pane: a trivial setting modification in the tree of settings keys, even if that modification is a no-op, like explicitly specifying a default as its default value. For example, put at the top of your and save the file. (You could've also poked to be either or I think, maybe?) whether autocomplete/hover works properly in , completing settings names and such. It should work now. can even remove the edit you made in step (4), save again, and autocomplete/hover still works. VSCode. autocomplete/hover is broken again in , until some modification to the tree of settings keys is made again, like in step 4. For example, commenting out if it's there, and saving, restores autocomplete/hover.