@@ -103,39 +103,32 @@ export class PreferencesContribution implements IWorkbenchContribution {
103103 private start ( ) : void {
104104
105105 this . textModelResolverService . registerTextModelContentProvider ( 'vscode' , {
106- provideTextContent : ( uri : URI ) : Promise < ITextModel | null > | null => {
106+ provideTextContent : async ( uri : URI ) : Promise < ITextModel | null > => {
107107 if ( uri . scheme !== 'vscode' ) {
108108 return null ;
109109 }
110110 if ( uri . authority === 'schemas' ) {
111- const schemaModel = this . getSchemaModel ( uri ) ;
112- if ( schemaModel ) {
113- return Promise . resolve ( schemaModel ) ;
114- }
111+ return this . getSchemaModel ( uri ) ;
115112 }
116- return Promise . resolve ( this . preferencesService . resolveModel ( uri ) ) ;
113+ return this . preferencesService . resolveModel ( uri ) ;
117114 }
118115 } ) ;
119116 }
120117
121- private getSchemaModel ( uri : URI ) : ITextModel | null {
122- let schema = schemaRegistry . getSchemaContributions ( ) . schemas [ uri . toString ( ) ] ;
123- if ( schema ) {
124- const modelContent = JSON . stringify ( schema ) ;
125- const languageSelection = this . languageService . createById ( 'jsonc' ) ;
126- const model = this . modelService . createModel ( modelContent , languageSelection , uri ) ;
127- const disposables = new DisposableStore ( ) ;
128- disposables . add ( schemaRegistry . onDidChangeSchema ( schemaUri => {
129- if ( schemaUri === uri . toString ( ) ) {
130- schema = schemaRegistry . getSchemaContributions ( ) . schemas [ uri . toString ( ) ] ;
131- model . setValue ( JSON . stringify ( schema ) ) ;
132- }
133- } ) ) ;
134- disposables . add ( model . onWillDispose ( ( ) => disposables . dispose ( ) ) ) ;
135-
136- return model ;
137- }
138- return null ;
118+ private getSchemaModel ( uri : URI ) : ITextModel {
119+ let schema = schemaRegistry . getSchemaContributions ( ) . schemas [ uri . toString ( ) ] ?? { } /* Use empty schema if not yet registered */ ;
120+ const modelContent = JSON . stringify ( schema ) ;
121+ const languageSelection = this . languageService . createById ( 'jsonc' ) ;
122+ const model = this . modelService . createModel ( modelContent , languageSelection , uri ) ;
123+ const disposables = new DisposableStore ( ) ;
124+ disposables . add ( schemaRegistry . onDidChangeSchema ( schemaUri => {
125+ if ( schemaUri === uri . toString ( ) ) {
126+ schema = schemaRegistry . getSchemaContributions ( ) . schemas [ uri . toString ( ) ] ;
127+ model . setValue ( JSON . stringify ( schema ) ) ;
128+ }
129+ } ) ) ;
130+ disposables . add ( model . onWillDispose ( ( ) => disposables . dispose ( ) ) ) ;
131+ return model ;
139132 }
140133
141134 dispose ( ) : void {
0 commit comments