@@ -103,39 +103,32 @@ export class PreferencesContribution implements IWorkbenchContribution {
103
103
private start ( ) : void {
104
104
105
105
this . textModelResolverService . registerTextModelContentProvider ( 'vscode' , {
106
- provideTextContent : ( uri : URI ) : Promise < ITextModel | null > | null => {
106
+ provideTextContent : async ( uri : URI ) : Promise < ITextModel | null > => {
107
107
if ( uri . scheme !== 'vscode' ) {
108
108
return null ;
109
109
}
110
110
if ( uri . authority === 'schemas' ) {
111
- const schemaModel = this . getSchemaModel ( uri ) ;
112
- if ( schemaModel ) {
113
- return Promise . resolve ( schemaModel ) ;
114
- }
111
+ return this . getSchemaModel ( uri ) ;
115
112
}
116
- return Promise . resolve ( this . preferencesService . resolveModel ( uri ) ) ;
113
+ return this . preferencesService . resolveModel ( uri ) ;
117
114
}
118
115
} ) ;
119
116
}
120
117
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 ;
139
132
}
140
133
141
134
dispose ( ) : void {
0 commit comments