diff --git a/src/jsonMode.ts b/src/jsonMode.ts index cd7b2113..671c492f 100644 --- a/src/jsonMode.ts +++ b/src/jsonMode.ts @@ -24,12 +24,12 @@ export function setupMode(defaults: LanguageServiceDefaultsImpl): void { return client.getLanguageServiceWorker(...uris); }; - let languageId = defaults.languageId; + const {disableDefaultFormatter, languageId} = defaults; disposables.push(monaco.languages.registerCompletionItemProvider(languageId, new languageFeatures.CompletionAdapter(worker))); disposables.push(monaco.languages.registerHoverProvider(languageId, new languageFeatures.HoverAdapter(worker))); disposables.push(monaco.languages.registerDocumentSymbolProvider(languageId, new languageFeatures.DocumentSymbolAdapter(worker))); - if (!defaults.diagnosticsOptions.disableDefaultFormatter) { + if (!disableDefaultFormatter) { disposables.push(monaco.languages.registerDocumentFormattingEditProvider(languageId, new languageFeatures.DocumentFormattingEditProvider(worker))); disposables.push(monaco.languages.registerDocumentRangeFormattingEditProvider(languageId, new languageFeatures.DocumentRangeFormattingEditProvider(worker))); } diff --git a/src/monaco.contribution.ts b/src/monaco.contribution.ts index 7c6438ca..fcb81fdc 100644 --- a/src/monaco.contribution.ts +++ b/src/monaco.contribution.ts @@ -16,11 +16,13 @@ export class LanguageServiceDefaultsImpl implements monaco.languages.json.Langua private _onDidChange = new Emitter(); private _diagnosticsOptions: monaco.languages.json.DiagnosticsOptions; + private _disableDefaultFormatter: boolean; private _languageId: string; - constructor(languageId: string, diagnosticsOptions: monaco.languages.json.DiagnosticsOptions) { + constructor(languageId: string, diagnosticsOptions: monaco.languages.json.DiagnosticsOptions, disableDefaultFormatter: boolean) { this._languageId = languageId; this.setDiagnosticsOptions(diagnosticsOptions); + this.setDisableDefaultFormatter(disableDefaultFormatter) } get onDidChange(): IEvent { @@ -31,6 +33,10 @@ export class LanguageServiceDefaultsImpl implements monaco.languages.json.Langua return this._languageId; } + get disableDefaultFormatter(): boolean { + return this._disableDefaultFormatter; + } + get diagnosticsOptions(): monaco.languages.json.DiagnosticsOptions { return this._diagnosticsOptions; } @@ -39,17 +45,20 @@ export class LanguageServiceDefaultsImpl implements monaco.languages.json.Langua this._diagnosticsOptions = options || Object.create(null); this._onDidChange.fire(this); } + setDisableDefaultFormatter(disable: boolean): void { + this._disableDefaultFormatter = disable; + this._onDidChange.fire(this); + }; } const diagnosticDefault: monaco.languages.json.DiagnosticsOptions = { validate: true, allowComments: true, schemas: [], - enableSchemaRequest: false, - disableDefaultFormatter: false + enableSchemaRequest: false }; -const jsonDefaults = new LanguageServiceDefaultsImpl('json', diagnosticDefault); +const jsonDefaults = new LanguageServiceDefaultsImpl('json', diagnosticDefault, false); // Export API diff --git a/src/monaco.d.ts b/src/monaco.d.ts index 83b5517a..25e04d49 100644 --- a/src/monaco.d.ts +++ b/src/monaco.d.ts @@ -30,10 +30,6 @@ declare module monaco.languages.json { */ readonly schema?: any; }[]; - /** - * Disable the default JSON formatter. - */ - readonly disableDefaultFormatter?: boolean; /** * If set, the schema service would load schema content on-demand with 'fetch' if available */ @@ -44,6 +40,11 @@ declare module monaco.languages.json { readonly onDidChange: IEvent; readonly diagnosticsOptions: DiagnosticsOptions; setDiagnosticsOptions(options: DiagnosticsOptions): void; + /** + * Disable the default JSON formatter. + */ + readonly disableDefaultFormatter?: boolean; + setDisableDefaultFormatter(disable: boolean): void; } export var jsonDefaults: LanguageServiceDefaults;