mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 20:52:56 +01:00
update markers on settings change (for Microsoft/monaco-editor#755
This commit is contained in:
parent
fe637537e0
commit
e9046ef4a9
2 changed files with 16 additions and 19 deletions
|
|
@ -4,11 +4,11 @@
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import {WorkerManager} from './workerManager';
|
import { WorkerManager } from './workerManager';
|
||||||
import {JSONWorker} from './jsonWorker';
|
import { JSONWorker } from './jsonWorker';
|
||||||
import {LanguageServiceDefaultsImpl} from './monaco.contribution';
|
import { LanguageServiceDefaultsImpl } from './monaco.contribution';
|
||||||
import * as languageFeatures from './languageFeatures';
|
import * as languageFeatures from './languageFeatures';
|
||||||
import {createTokenizationSupport} from './tokenization';
|
import { createTokenizationSupport } from './tokenization';
|
||||||
|
|
||||||
import Promise = monaco.Promise;
|
import Promise = monaco.Promise;
|
||||||
import Uri = monaco.Uri;
|
import Uri = monaco.Uri;
|
||||||
|
|
@ -27,16 +27,12 @@ export function setupMode(defaults: LanguageServiceDefaultsImpl): void {
|
||||||
|
|
||||||
let languageId = defaults.languageId;
|
let languageId = defaults.languageId;
|
||||||
|
|
||||||
let diagnostcsAdapter = new languageFeatures.DiagnostcsAdapter(languageId, worker);
|
|
||||||
defaults.onDidChange(c => diagnostcsAdapter.clearMarkers());
|
|
||||||
|
|
||||||
|
|
||||||
disposables.push(monaco.languages.registerCompletionItemProvider(languageId, new languageFeatures.CompletionAdapter(worker)));
|
disposables.push(monaco.languages.registerCompletionItemProvider(languageId, new languageFeatures.CompletionAdapter(worker)));
|
||||||
disposables.push(monaco.languages.registerHoverProvider(languageId, new languageFeatures.HoverAdapter(worker)));
|
disposables.push(monaco.languages.registerHoverProvider(languageId, new languageFeatures.HoverAdapter(worker)));
|
||||||
disposables.push(monaco.languages.registerDocumentSymbolProvider(languageId, new languageFeatures.DocumentSymbolAdapter(worker)));
|
disposables.push(monaco.languages.registerDocumentSymbolProvider(languageId, new languageFeatures.DocumentSymbolAdapter(worker)));
|
||||||
disposables.push(monaco.languages.registerDocumentFormattingEditProvider(languageId, new languageFeatures.DocumentFormattingEditProvider(worker)));
|
disposables.push(monaco.languages.registerDocumentFormattingEditProvider(languageId, new languageFeatures.DocumentFormattingEditProvider(worker)));
|
||||||
disposables.push(monaco.languages.registerDocumentRangeFormattingEditProvider(languageId, new languageFeatures.DocumentRangeFormattingEditProvider(worker)));
|
disposables.push(monaco.languages.registerDocumentRangeFormattingEditProvider(languageId, new languageFeatures.DocumentRangeFormattingEditProvider(worker)));
|
||||||
disposables.push(diagnostcsAdapter);
|
disposables.push(new languageFeatures.DiagnosticsAdapter(languageId, worker, defaults));
|
||||||
disposables.push(monaco.languages.setTokensProvider(languageId, createTokenizationSupport(true)));
|
disposables.push(monaco.languages.setTokensProvider(languageId, createTokenizationSupport(true)));
|
||||||
disposables.push(monaco.languages.setLanguageConfiguration(languageId, richEditConfiguration));
|
disposables.push(monaco.languages.setLanguageConfiguration(languageId, richEditConfiguration));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,12 +24,12 @@ export interface WorkerAccessor {
|
||||||
|
|
||||||
// --- diagnostics --- ---
|
// --- diagnostics --- ---
|
||||||
|
|
||||||
export class DiagnostcsAdapter {
|
export class DiagnosticsAdapter {
|
||||||
|
|
||||||
private _disposables: IDisposable[] = [];
|
private _disposables: IDisposable[] = [];
|
||||||
private _listener: { [uri: string]: IDisposable } = Object.create(null);
|
private _listener: { [uri: string]: IDisposable } = Object.create(null);
|
||||||
|
|
||||||
constructor(private _languageId: string, private _worker: WorkerAccessor) {
|
constructor(private _languageId: string, private _worker: WorkerAccessor, defaults: LanguageServiceDefaultsImpl) {
|
||||||
const onModelAdd = (model: monaco.editor.IModel): void => {
|
const onModelAdd = (model: monaco.editor.IModel): void => {
|
||||||
let modeId = model.getModeId();
|
let modeId = model.getModeId();
|
||||||
if (modeId !== this._languageId) {
|
if (modeId !== this._languageId) {
|
||||||
|
|
@ -66,6 +66,15 @@ export class DiagnostcsAdapter {
|
||||||
this._resetSchema(event.model.uri);
|
this._resetSchema(event.model.uri);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
defaults.onDidChange(_ => {
|
||||||
|
monaco.editor.getModels().forEach(model => {
|
||||||
|
if (model.getModeId() === this._languageId) {
|
||||||
|
onModelRemoved(model);
|
||||||
|
onModelAdd(model);;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
this._disposables.push({
|
this._disposables.push({
|
||||||
dispose: () => {
|
dispose: () => {
|
||||||
monaco.editor.getModels().forEach(onModelRemoved);
|
monaco.editor.getModels().forEach(onModelRemoved);
|
||||||
|
|
@ -83,14 +92,6 @@ export class DiagnostcsAdapter {
|
||||||
this._disposables = [];
|
this._disposables = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
public clearMarkers() {
|
|
||||||
monaco.editor.getModels().forEach(model => {
|
|
||||||
if (model.getModeId() === this._languageId) {
|
|
||||||
monaco.editor.setModelMarkers(model, this._languageId, []);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private _resetSchema(resource: Uri): void {
|
private _resetSchema(resource: Uri): void {
|
||||||
this._worker().then(worker => {
|
this._worker().then(worker => {
|
||||||
worker.resetSchema(resource.toString());
|
worker.resetSchema(resource.toString());
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue