refresh decorations after new setDiagnosticsOptions have been applied. fixes Microsoft/monaco-editor#755

pull/2748/head
Martin Aeschlimann 7 years ago
parent 427abfc518
commit d806983671

@ -27,12 +27,16 @@ 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(new languageFeatures.DiagnostcsAdapter(languageId, worker)); disposables.push(diagnostcsAdapter);
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));
} }

@ -4,8 +4,8 @@
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict'; 'use strict';
import {LanguageServiceDefaultsImpl} from './monaco.contribution'; import { LanguageServiceDefaultsImpl } from './monaco.contribution';
import {JSONWorker} from './jsonWorker'; import { JSONWorker } from './jsonWorker';
import * as ls from 'vscode-languageserver-types'; import * as ls from 'vscode-languageserver-types';
@ -68,6 +68,7 @@ export class DiagnostcsAdapter {
this._disposables.push({ this._disposables.push({
dispose: () => { dispose: () => {
monaco.editor.getModels().forEach(onModelRemoved);
for (let key in this._listener) { for (let key in this._listener) {
this._listener[key].dispose(); this._listener[key].dispose();
} }
@ -82,6 +83,14 @@ 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());
@ -241,7 +250,7 @@ function fromMarkdownString(entry: string | monaco.IMarkdownString): ls.MarkupCo
} }
function fromCompletionItem(entry: DataCompletionItem): ls.CompletionItem { function fromCompletionItem(entry: DataCompletionItem): ls.CompletionItem {
let item : ls.CompletionItem = { let item: ls.CompletionItem = {
label: entry.label, label: entry.label,
sortText: entry.sortText, sortText: entry.sortText,
filterText: entry.filterText, filterText: entry.filterText,
@ -254,7 +263,7 @@ function fromCompletionItem(entry: DataCompletionItem): ls.CompletionItem {
item.insertText = entry.insertText.value; item.insertText = entry.insertText.value;
item.insertTextFormat = ls.InsertTextFormat.Snippet item.insertTextFormat = ls.InsertTextFormat.Snippet
} else { } else {
item.insertText = <string> entry.insertText; item.insertText = <string>entry.insertText;
} }
if (entry.range) { if (entry.range) {
item.textEdit = ls.TextEdit.replace(fromRange(entry.range), item.insertText); item.textEdit = ls.TextEdit.replace(fromRange(entry.range), item.insertText);
@ -283,7 +292,7 @@ export class CompletionAdapter implements monaco.languages.CompletionItemProvide
return; return;
} }
let items: monaco.languages.CompletionItem[] = info.items.map(entry => { let items: monaco.languages.CompletionItem[] = info.items.map(entry => {
let item : monaco.languages.CompletionItem = { let item: monaco.languages.CompletionItem = {
label: entry.label, label: entry.label,
insertText: entry.insertText, insertText: entry.insertText,
sortText: entry.sortText, sortText: entry.sortText,
@ -297,7 +306,7 @@ export class CompletionAdapter implements monaco.languages.CompletionItemProvide
item.insertText = entry.textEdit.newText; item.insertText = entry.textEdit.newText;
} }
if (entry.insertTextFormat === ls.InsertTextFormat.Snippet) { if (entry.insertTextFormat === ls.InsertTextFormat.Snippet) {
item.insertText = { value: <string> item.insertText }; item.insertText = { value: <string>item.insertText };
} }
return item; return item;
}); });

Loading…
Cancel
Save