mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 16:15:41 +01:00
- provide custom schema request service
- make sure that on-demand loading of schemas works as in VSCode - bump version of plugin
This commit is contained in:
parent
0e6ea95f4f
commit
5e33eb349b
6 changed files with 22 additions and 7 deletions
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "monaco-json",
|
||||
"version": "2.1.1",
|
||||
"version": "2.1.2",
|
||||
"description": "JSON plugin for the Monaco Editor",
|
||||
"scripts": {
|
||||
"compile": "mrmdir ./out && tsc -p ./src/tsconfig.json && tsc -p ./src/tsconfig.esm.json",
|
||||
|
|
|
|||
|
|
@ -11,6 +11,11 @@ import IWorkerContext = monaco.worker.IWorkerContext;
|
|||
import * as jsonService from 'vscode-json-languageservice';
|
||||
import * as ls from 'vscode-languageserver-types';
|
||||
|
||||
let defaultSchemaRequestService;
|
||||
if (typeof fetch !== 'undefined'){
|
||||
defaultSchemaRequestService = function (url) { return fetch(url).then(response => response.text())};
|
||||
}
|
||||
|
||||
class PromiseAdapter<T> implements jsonService.Thenable<T> {
|
||||
private wrapped: monaco.Promise<T>;
|
||||
|
||||
|
|
@ -49,7 +54,10 @@ export class JSONWorker {
|
|||
this._ctx = ctx;
|
||||
this._languageSettings = createData.languageSettings;
|
||||
this._languageId = createData.languageId;
|
||||
this._languageService = jsonService.getLanguageService({ promiseConstructor: PromiseAdapter });
|
||||
this._languageService = jsonService.getLanguageService({
|
||||
schemaRequestService: createData.enableSchemaRequest && defaultSchemaRequestService,
|
||||
promiseConstructor: PromiseAdapter
|
||||
});
|
||||
this._languageService.configure(this._languageSettings);
|
||||
}
|
||||
|
||||
|
|
@ -114,6 +122,7 @@ export class JSONWorker {
|
|||
export interface ICreateData {
|
||||
languageId: string;
|
||||
languageSettings: jsonService.LanguageSettings;
|
||||
enableSchemaRequest: boolean;
|
||||
}
|
||||
|
||||
export function create(ctx: IWorkerContext, createData: ICreateData): JSONWorker {
|
||||
|
|
|
|||
|
|
@ -44,8 +44,9 @@ export class LanguageServiceDefaultsImpl implements monaco.languages.json.Langua
|
|||
const diagnosticDefault: monaco.languages.json.DiagnosticsOptions = {
|
||||
validate: true,
|
||||
allowComments: true,
|
||||
schemas: []
|
||||
}
|
||||
schemas: [],
|
||||
enableSchemaRequest: false
|
||||
};
|
||||
|
||||
const jsonDefaults = new LanguageServiceDefaultsImpl('json', diagnosticDefault);
|
||||
|
||||
|
|
|
|||
6
src/monaco.d.ts
vendored
6
src/monaco.d.ts
vendored
|
|
@ -30,6 +30,10 @@ declare module monaco.languages.json {
|
|||
*/
|
||||
readonly schema?: any;
|
||||
}[];
|
||||
/**
|
||||
* If set, the schema service would load schema content on-demand with 'fetch' if available, otherwise content would be taken from `schemas` property
|
||||
*/
|
||||
readonly enableSchemaRequest? : boolean
|
||||
}
|
||||
|
||||
export interface LanguageServiceDefaults {
|
||||
|
|
@ -39,4 +43,4 @@ declare module monaco.languages.json {
|
|||
}
|
||||
|
||||
export var jsonDefaults: LanguageServiceDefaults;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,7 +69,8 @@ export class WorkerManager {
|
|||
// passed in to the create() method
|
||||
createData: {
|
||||
languageSettings: this._defaults.diagnosticsOptions,
|
||||
languageId: this._defaults.languageId
|
||||
languageId: this._defaults.languageId,
|
||||
enableSchemaRequest: this._defaults.diagnosticsOptions.enableSchemaRequest
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -106,4 +106,4 @@
|
|||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue