mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 20:52:56 +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",
|
"name": "monaco-json",
|
||||||
"version": "2.1.1",
|
"version": "2.1.2",
|
||||||
"description": "JSON plugin for the Monaco Editor",
|
"description": "JSON plugin for the Monaco Editor",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"compile": "mrmdir ./out && tsc -p ./src/tsconfig.json && tsc -p ./src/tsconfig.esm.json",
|
"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 jsonService from 'vscode-json-languageservice';
|
||||||
import * as ls from 'vscode-languageserver-types';
|
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> {
|
class PromiseAdapter<T> implements jsonService.Thenable<T> {
|
||||||
private wrapped: monaco.Promise<T>;
|
private wrapped: monaco.Promise<T>;
|
||||||
|
|
||||||
|
|
@ -49,7 +54,10 @@ export class JSONWorker {
|
||||||
this._ctx = ctx;
|
this._ctx = ctx;
|
||||||
this._languageSettings = createData.languageSettings;
|
this._languageSettings = createData.languageSettings;
|
||||||
this._languageId = createData.languageId;
|
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);
|
this._languageService.configure(this._languageSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -114,6 +122,7 @@ export class JSONWorker {
|
||||||
export interface ICreateData {
|
export interface ICreateData {
|
||||||
languageId: string;
|
languageId: string;
|
||||||
languageSettings: jsonService.LanguageSettings;
|
languageSettings: jsonService.LanguageSettings;
|
||||||
|
enableSchemaRequest: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function create(ctx: IWorkerContext, createData: ICreateData): JSONWorker {
|
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 = {
|
const diagnosticDefault: monaco.languages.json.DiagnosticsOptions = {
|
||||||
validate: true,
|
validate: true,
|
||||||
allowComments: true,
|
allowComments: true,
|
||||||
schemas: []
|
schemas: [],
|
||||||
}
|
enableSchemaRequest: false
|
||||||
|
};
|
||||||
|
|
||||||
const jsonDefaults = new LanguageServiceDefaultsImpl('json', diagnosticDefault);
|
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;
|
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 {
|
export interface LanguageServiceDefaults {
|
||||||
|
|
@ -39,4 +43,4 @@ declare module monaco.languages.json {
|
||||||
}
|
}
|
||||||
|
|
||||||
export var jsonDefaults: LanguageServiceDefaults;
|
export var jsonDefaults: LanguageServiceDefaults;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,8 @@ export class WorkerManager {
|
||||||
// passed in to the create() method
|
// passed in to the create() method
|
||||||
createData: {
|
createData: {
|
||||||
languageSettings: this._defaults.diagnosticsOptions,
|
languageSettings: this._defaults.diagnosticsOptions,
|
||||||
languageId: this._defaults.languageId
|
languageId: this._defaults.languageId,
|
||||||
|
enableSchemaRequest: this._defaults.diagnosticsOptions.enableSchemaRequest
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -106,4 +106,4 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue