mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 16:15:41 +01:00
Inline adapters
This commit is contained in:
parent
8f57069f86
commit
a33b7cee5a
6 changed files with 91 additions and 225 deletions
|
|
@ -6,7 +6,7 @@
|
|||
import { WorkerManager } from './workerManager';
|
||||
import type { CSSWorker } from './cssWorker';
|
||||
import { LanguageServiceDefaults } from './monaco.contribution';
|
||||
import * as languageFeatures from './languageFeatures';
|
||||
import * as languageFeatures from '../common/lspLanguageFeatures';
|
||||
import { Uri, IDisposable, languages } from '../fillers/monaco-editor-core';
|
||||
|
||||
export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
||||
|
|
@ -16,7 +16,9 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
|||
const client = new WorkerManager(defaults);
|
||||
disposables.push(client);
|
||||
|
||||
const worker: languageFeatures.WorkerAccessor = (...uris: Uri[]): Promise<CSSWorker> => {
|
||||
const worker: languageFeatures.WorkerAccessor<CSSWorker> = (
|
||||
...uris: Uri[]
|
||||
): Promise<CSSWorker> => {
|
||||
return client.getLanguageServiceWorker(...uris);
|
||||
};
|
||||
|
||||
|
|
@ -29,20 +31,20 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
|||
providers.push(
|
||||
languages.registerCompletionItemProvider(
|
||||
languageId,
|
||||
new languageFeatures.CSSCompletionAdapter(worker)
|
||||
new languageFeatures.CompletionAdapter(worker, ['/', '-', ':'])
|
||||
)
|
||||
);
|
||||
}
|
||||
if (modeConfiguration.hovers) {
|
||||
providers.push(
|
||||
languages.registerHoverProvider(languageId, new languageFeatures.CSSHoverAdapter(worker))
|
||||
languages.registerHoverProvider(languageId, new languageFeatures.HoverAdapter(worker))
|
||||
);
|
||||
}
|
||||
if (modeConfiguration.documentHighlights) {
|
||||
providers.push(
|
||||
languages.registerDocumentHighlightProvider(
|
||||
languageId,
|
||||
new languageFeatures.CSSDocumentHighlightAdapter(worker)
|
||||
new languageFeatures.DocumentHighlightAdapter(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
@ -50,7 +52,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
|||
providers.push(
|
||||
languages.registerDefinitionProvider(
|
||||
languageId,
|
||||
new languageFeatures.CSSDefinitionAdapter(worker)
|
||||
new languageFeatures.DefinitionAdapter(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
@ -58,7 +60,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
|||
providers.push(
|
||||
languages.registerReferenceProvider(
|
||||
languageId,
|
||||
new languageFeatures.CSSReferenceAdapter(worker)
|
||||
new languageFeatures.ReferenceAdapter(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
@ -66,20 +68,20 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
|||
providers.push(
|
||||
languages.registerDocumentSymbolProvider(
|
||||
languageId,
|
||||
new languageFeatures.CSSDocumentSymbolAdapter(worker)
|
||||
new languageFeatures.DocumentSymbolAdapter(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
if (modeConfiguration.rename) {
|
||||
providers.push(
|
||||
languages.registerRenameProvider(languageId, new languageFeatures.CSSRenameAdapter(worker))
|
||||
languages.registerRenameProvider(languageId, new languageFeatures.RenameAdapter(worker))
|
||||
);
|
||||
}
|
||||
if (modeConfiguration.colors) {
|
||||
providers.push(
|
||||
languages.registerColorProvider(
|
||||
languageId,
|
||||
new languageFeatures.CSSDocumentColorAdapter(worker)
|
||||
new languageFeatures.DocumentColorAdapter(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
@ -87,18 +89,20 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
|||
providers.push(
|
||||
languages.registerFoldingRangeProvider(
|
||||
languageId,
|
||||
new languageFeatures.CSSFoldingRangeAdapter(worker)
|
||||
new languageFeatures.FoldingRangeAdapter(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
if (modeConfiguration.diagnostics) {
|
||||
providers.push(new languageFeatures.CSSDiagnosticsAdapter(languageId, worker, defaults));
|
||||
providers.push(
|
||||
new languageFeatures.DiagnosticsAdapter(languageId, worker, defaults.onDidChange)
|
||||
);
|
||||
}
|
||||
if (modeConfiguration.selectionRanges) {
|
||||
providers.push(
|
||||
languages.registerSelectionRangeProvider(
|
||||
languageId,
|
||||
new languageFeatures.CSSSelectionRangeAdapter(worker)
|
||||
new languageFeatures.SelectionRangeAdapter(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,55 +0,0 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { LanguageServiceDefaults } from './monaco.contribution';
|
||||
import type { CSSWorker } from './cssWorker';
|
||||
import { Uri } from '../fillers/monaco-editor-core';
|
||||
import {
|
||||
DiagnosticsAdapter,
|
||||
CompletionAdapter,
|
||||
HoverAdapter,
|
||||
DocumentHighlightAdapter,
|
||||
DefinitionAdapter,
|
||||
ReferenceAdapter,
|
||||
RenameAdapter,
|
||||
DocumentSymbolAdapter,
|
||||
DocumentColorAdapter,
|
||||
FoldingRangeAdapter,
|
||||
SelectionRangeAdapter
|
||||
} from '../common/lspLanguageFeatures';
|
||||
|
||||
export interface WorkerAccessor {
|
||||
(first: Uri, ...more: Uri[]): Promise<CSSWorker>;
|
||||
}
|
||||
|
||||
export class CSSDiagnosticsAdapter extends DiagnosticsAdapter<CSSWorker> {
|
||||
constructor(languageId: string, worker: WorkerAccessor, defaults: LanguageServiceDefaults) {
|
||||
super(languageId, worker, defaults.onDidChange);
|
||||
}
|
||||
}
|
||||
|
||||
export class CSSCompletionAdapter extends CompletionAdapter<CSSWorker> {
|
||||
constructor(worker: WorkerAccessor) {
|
||||
super(worker, ['/', '-', ':']);
|
||||
}
|
||||
}
|
||||
|
||||
export class CSSHoverAdapter extends HoverAdapter<CSSWorker> {}
|
||||
|
||||
export class CSSDocumentHighlightAdapter extends DocumentHighlightAdapter<CSSWorker> {}
|
||||
|
||||
export class CSSDefinitionAdapter extends DefinitionAdapter<CSSWorker> {}
|
||||
|
||||
export class CSSReferenceAdapter extends ReferenceAdapter<CSSWorker> {}
|
||||
|
||||
export class CSSRenameAdapter extends RenameAdapter<CSSWorker> {}
|
||||
|
||||
export class CSSDocumentSymbolAdapter extends DocumentSymbolAdapter<CSSWorker> {}
|
||||
|
||||
export class CSSDocumentColorAdapter extends DocumentColorAdapter<CSSWorker> {}
|
||||
|
||||
export class CSSFoldingRangeAdapter extends FoldingRangeAdapter<CSSWorker> {}
|
||||
|
||||
export class CSSSelectionRangeAdapter extends SelectionRangeAdapter<CSSWorker> {}
|
||||
|
|
@ -6,53 +6,58 @@
|
|||
import { WorkerManager } from './workerManager';
|
||||
import type { HTMLWorker } from './htmlWorker';
|
||||
import { LanguageServiceDefaults } from './monaco.contribution';
|
||||
import * as languageFeatures from './languageFeatures';
|
||||
import * as languageFeatures from '../common/lspLanguageFeatures';
|
||||
import { Uri, IDisposable, languages } from '../fillers/monaco-editor-core';
|
||||
|
||||
class HTMLCompletionAdapter extends languageFeatures.CompletionAdapter<HTMLWorker> {
|
||||
constructor(worker: languageFeatures.WorkerAccessor<HTMLWorker>) {
|
||||
super(worker, ['.', ':', '<', '"', '=', '/']);
|
||||
}
|
||||
}
|
||||
|
||||
export function setupMode1(defaults: LanguageServiceDefaults): void {
|
||||
const client = new WorkerManager(defaults);
|
||||
|
||||
const worker: languageFeatures.WorkerAccessor = (...uris: Uri[]): Promise<HTMLWorker> => {
|
||||
const worker: languageFeatures.WorkerAccessor<HTMLWorker> = (
|
||||
...uris: Uri[]
|
||||
): Promise<HTMLWorker> => {
|
||||
return client.getLanguageServiceWorker(...uris);
|
||||
};
|
||||
|
||||
let languageId = defaults.languageId;
|
||||
|
||||
// all modes
|
||||
languages.registerCompletionItemProvider(
|
||||
languageId,
|
||||
new languageFeatures.HTMLCompletionAdapter(worker)
|
||||
);
|
||||
languages.registerHoverProvider(languageId, new languageFeatures.HTMLHoverAdapter(worker));
|
||||
languages.registerCompletionItemProvider(languageId, new HTMLCompletionAdapter(worker));
|
||||
languages.registerHoverProvider(languageId, new languageFeatures.HoverAdapter(worker));
|
||||
|
||||
languages.registerDocumentHighlightProvider(
|
||||
languageId,
|
||||
new languageFeatures.HTMLDocumentHighlightAdapter(worker)
|
||||
new languageFeatures.DocumentHighlightAdapter(worker)
|
||||
);
|
||||
languages.registerLinkProvider(languageId, new languageFeatures.HTMLDocumentLinkAdapter(worker));
|
||||
languages.registerLinkProvider(languageId, new languageFeatures.DocumentLinkAdapter(worker));
|
||||
languages.registerFoldingRangeProvider(
|
||||
languageId,
|
||||
new languageFeatures.HTMLFoldingRangeAdapter(worker)
|
||||
new languageFeatures.FoldingRangeAdapter(worker)
|
||||
);
|
||||
languages.registerDocumentSymbolProvider(
|
||||
languageId,
|
||||
new languageFeatures.HTMLDocumentSymbolAdapter(worker)
|
||||
new languageFeatures.DocumentSymbolAdapter(worker)
|
||||
);
|
||||
languages.registerSelectionRangeProvider(
|
||||
languageId,
|
||||
new languageFeatures.HTMLSelectionRangeAdapter(worker)
|
||||
new languageFeatures.SelectionRangeAdapter(worker)
|
||||
);
|
||||
languages.registerRenameProvider(languageId, new languageFeatures.HTMLRenameAdapter(worker));
|
||||
languages.registerRenameProvider(languageId, new languageFeatures.RenameAdapter(worker));
|
||||
|
||||
// only html
|
||||
if (languageId === 'html') {
|
||||
languages.registerDocumentFormattingEditProvider(
|
||||
languageId,
|
||||
new languageFeatures.HTMLDocumentFormattingEditProvider(worker)
|
||||
new languageFeatures.DocumentFormattingEditProvider(worker)
|
||||
);
|
||||
languages.registerDocumentRangeFormattingEditProvider(
|
||||
languageId,
|
||||
new languageFeatures.HTMLDocumentRangeFormattingEditProvider(worker)
|
||||
new languageFeatures.DocumentRangeFormattingEditProvider(worker)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -64,7 +69,9 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
|||
const client = new WorkerManager(defaults);
|
||||
disposables.push(client);
|
||||
|
||||
const worker: languageFeatures.WorkerAccessor = (...uris: Uri[]): Promise<HTMLWorker> => {
|
||||
const worker: languageFeatures.WorkerAccessor<HTMLWorker> = (
|
||||
...uris: Uri[]
|
||||
): Promise<HTMLWorker> => {
|
||||
return client.getLanguageServiceWorker(...uris);
|
||||
};
|
||||
|
||||
|
|
@ -75,51 +82,45 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
|||
|
||||
if (modeConfiguration.completionItems) {
|
||||
providers.push(
|
||||
languages.registerCompletionItemProvider(
|
||||
languageId,
|
||||
new languageFeatures.HTMLCompletionAdapter(worker)
|
||||
)
|
||||
languages.registerCompletionItemProvider(languageId, new HTMLCompletionAdapter(worker))
|
||||
);
|
||||
}
|
||||
if (modeConfiguration.hovers) {
|
||||
providers.push(
|
||||
languages.registerHoverProvider(languageId, new languageFeatures.HTMLHoverAdapter(worker))
|
||||
languages.registerHoverProvider(languageId, new languageFeatures.HoverAdapter(worker))
|
||||
);
|
||||
}
|
||||
if (modeConfiguration.documentHighlights) {
|
||||
providers.push(
|
||||
languages.registerDocumentHighlightProvider(
|
||||
languageId,
|
||||
new languageFeatures.HTMLDocumentHighlightAdapter(worker)
|
||||
new languageFeatures.DocumentHighlightAdapter(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
if (modeConfiguration.links) {
|
||||
providers.push(
|
||||
languages.registerLinkProvider(
|
||||
languageId,
|
||||
new languageFeatures.HTMLDocumentLinkAdapter(worker)
|
||||
)
|
||||
languages.registerLinkProvider(languageId, new languageFeatures.DocumentLinkAdapter(worker))
|
||||
);
|
||||
}
|
||||
if (modeConfiguration.documentSymbols) {
|
||||
providers.push(
|
||||
languages.registerDocumentSymbolProvider(
|
||||
languageId,
|
||||
new languageFeatures.HTMLDocumentSymbolAdapter(worker)
|
||||
new languageFeatures.DocumentSymbolAdapter(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
if (modeConfiguration.rename) {
|
||||
providers.push(
|
||||
languages.registerRenameProvider(languageId, new languageFeatures.HTMLRenameAdapter(worker))
|
||||
languages.registerRenameProvider(languageId, new languageFeatures.RenameAdapter(worker))
|
||||
);
|
||||
}
|
||||
if (modeConfiguration.foldingRanges) {
|
||||
providers.push(
|
||||
languages.registerFoldingRangeProvider(
|
||||
languageId,
|
||||
new languageFeatures.HTMLFoldingRangeAdapter(worker)
|
||||
new languageFeatures.FoldingRangeAdapter(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
@ -127,7 +128,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
|||
providers.push(
|
||||
languages.registerSelectionRangeProvider(
|
||||
languageId,
|
||||
new languageFeatures.HTMLSelectionRangeAdapter(worker)
|
||||
new languageFeatures.SelectionRangeAdapter(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
@ -135,7 +136,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
|||
providers.push(
|
||||
languages.registerDocumentFormattingEditProvider(
|
||||
languageId,
|
||||
new languageFeatures.HTMLDocumentFormattingEditProvider(worker)
|
||||
new languageFeatures.DocumentFormattingEditProvider(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
@ -143,7 +144,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
|||
providers.push(
|
||||
languages.registerDocumentRangeFormattingEditProvider(
|
||||
languageId,
|
||||
new languageFeatures.HTMLDocumentRangeFormattingEditProvider(worker)
|
||||
new languageFeatures.DocumentRangeFormattingEditProvider(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,47 +0,0 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import type { HTMLWorker } from './htmlWorker';
|
||||
import { Uri } from '../fillers/monaco-editor-core';
|
||||
import {
|
||||
CompletionAdapter,
|
||||
HoverAdapter,
|
||||
DocumentHighlightAdapter,
|
||||
RenameAdapter,
|
||||
DocumentSymbolAdapter,
|
||||
DocumentLinkAdapter,
|
||||
DocumentFormattingEditProvider,
|
||||
DocumentRangeFormattingEditProvider,
|
||||
FoldingRangeAdapter,
|
||||
SelectionRangeAdapter
|
||||
} from '../common/lspLanguageFeatures';
|
||||
|
||||
export interface WorkerAccessor {
|
||||
(...more: Uri[]): Promise<HTMLWorker>;
|
||||
}
|
||||
|
||||
export class HTMLCompletionAdapter extends CompletionAdapter<HTMLWorker> {
|
||||
constructor(worker: WorkerAccessor) {
|
||||
super(worker, ['.', ':', '<', '"', '=', '/']);
|
||||
}
|
||||
}
|
||||
|
||||
export class HTMLHoverAdapter extends HoverAdapter<HTMLWorker> {}
|
||||
|
||||
export class HTMLDocumentHighlightAdapter extends DocumentHighlightAdapter<HTMLWorker> {}
|
||||
|
||||
export class HTMLRenameAdapter extends RenameAdapter<HTMLWorker> {}
|
||||
|
||||
export class HTMLDocumentSymbolAdapter extends DocumentSymbolAdapter<HTMLWorker> {}
|
||||
|
||||
export class HTMLDocumentLinkAdapter extends DocumentLinkAdapter<HTMLWorker> {}
|
||||
|
||||
export class HTMLDocumentFormattingEditProvider extends DocumentFormattingEditProvider<HTMLWorker> {}
|
||||
|
||||
export class HTMLDocumentRangeFormattingEditProvider extends DocumentRangeFormattingEditProvider<HTMLWorker> {}
|
||||
|
||||
export class HTMLFoldingRangeAdapter extends FoldingRangeAdapter<HTMLWorker> {}
|
||||
|
||||
export class HTMLSelectionRangeAdapter extends SelectionRangeAdapter<HTMLWorker> {}
|
||||
|
|
@ -6,9 +6,36 @@
|
|||
import { WorkerManager } from './workerManager';
|
||||
import type { JSONWorker } from './jsonWorker';
|
||||
import { LanguageServiceDefaults } from './monaco.contribution';
|
||||
import * as languageFeatures from './languageFeatures';
|
||||
import * as languageFeatures from '../common/lspLanguageFeatures';
|
||||
import { createTokenizationSupport } from './tokenization';
|
||||
import { Uri, IDisposable, languages } from '../fillers/monaco-editor-core';
|
||||
import { Uri, IDisposable, languages, editor } from '../fillers/monaco-editor-core';
|
||||
|
||||
class JSONDiagnosticsAdapter extends languageFeatures.DiagnosticsAdapter<JSONWorker> {
|
||||
constructor(
|
||||
languageId: string,
|
||||
worker: languageFeatures.WorkerAccessor<JSONWorker>,
|
||||
defaults: LanguageServiceDefaults
|
||||
) {
|
||||
super(languageId, worker, defaults.onDidChange);
|
||||
|
||||
this._disposables.push(
|
||||
editor.onWillDisposeModel((model) => {
|
||||
this._resetSchema(model.uri);
|
||||
})
|
||||
);
|
||||
this._disposables.push(
|
||||
editor.onDidChangeModelLanguage((event) => {
|
||||
this._resetSchema(event.model.uri);
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
private _resetSchema(resource: Uri): void {
|
||||
this._worker().then((worker) => {
|
||||
worker.resetSchema(resource.toString());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
||||
const disposables: IDisposable[] = [];
|
||||
|
|
@ -17,7 +44,9 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
|||
const client = new WorkerManager(defaults);
|
||||
disposables.push(client);
|
||||
|
||||
const worker: languageFeatures.WorkerAccessor = (...uris: Uri[]): Promise<JSONWorker> => {
|
||||
const worker: languageFeatures.WorkerAccessor<JSONWorker> = (
|
||||
...uris: Uri[]
|
||||
): Promise<JSONWorker> => {
|
||||
return client.getLanguageServiceWorker(...uris);
|
||||
};
|
||||
|
||||
|
|
@ -30,7 +59,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
|||
providers.push(
|
||||
languages.registerDocumentFormattingEditProvider(
|
||||
languageId,
|
||||
new languageFeatures.JSONDocumentFormattingEditProvider(worker)
|
||||
new languageFeatures.DocumentFormattingEditProvider(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
@ -38,7 +67,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
|||
providers.push(
|
||||
languages.registerDocumentRangeFormattingEditProvider(
|
||||
languageId,
|
||||
new languageFeatures.JSONDocumentRangeFormattingEditProvider(worker)
|
||||
new languageFeatures.DocumentRangeFormattingEditProvider(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
@ -46,20 +75,20 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
|||
providers.push(
|
||||
languages.registerCompletionItemProvider(
|
||||
languageId,
|
||||
new languageFeatures.JSONCompletionAdapter(worker)
|
||||
new languageFeatures.CompletionAdapter(worker, [' ', ':', '"'])
|
||||
)
|
||||
);
|
||||
}
|
||||
if (modeConfiguration.hovers) {
|
||||
providers.push(
|
||||
languages.registerHoverProvider(languageId, new languageFeatures.JSONHoverAdapter(worker))
|
||||
languages.registerHoverProvider(languageId, new languageFeatures.HoverAdapter(worker))
|
||||
);
|
||||
}
|
||||
if (modeConfiguration.documentSymbols) {
|
||||
providers.push(
|
||||
languages.registerDocumentSymbolProvider(
|
||||
languageId,
|
||||
new languageFeatures.JSONDocumentSymbolAdapter(worker)
|
||||
new languageFeatures.DocumentSymbolAdapter(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
@ -70,7 +99,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
|||
providers.push(
|
||||
languages.registerColorProvider(
|
||||
languageId,
|
||||
new languageFeatures.JSONDocumentColorAdapter(worker)
|
||||
new languageFeatures.DocumentColorAdapter(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
@ -78,18 +107,18 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
|||
providers.push(
|
||||
languages.registerFoldingRangeProvider(
|
||||
languageId,
|
||||
new languageFeatures.JSONFoldingRangeAdapter(worker)
|
||||
new languageFeatures.FoldingRangeAdapter(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
if (modeConfiguration.diagnostics) {
|
||||
providers.push(new languageFeatures.JSONDiagnosticsAdapter(languageId, worker, defaults));
|
||||
providers.push(new JSONDiagnosticsAdapter(languageId, worker, defaults));
|
||||
}
|
||||
if (modeConfiguration.selectionRanges) {
|
||||
providers.push(
|
||||
languages.registerSelectionRangeProvider(
|
||||
languageId,
|
||||
new languageFeatures.JSONSelectionRangeAdapter(worker)
|
||||
new languageFeatures.SelectionRangeAdapter(worker)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,66 +0,0 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { LanguageServiceDefaults } from './monaco.contribution';
|
||||
import type { JSONWorker } from './jsonWorker';
|
||||
import { editor, Uri } from '../fillers/monaco-editor-core';
|
||||
import {
|
||||
DiagnosticsAdapter,
|
||||
CompletionAdapter,
|
||||
HoverAdapter,
|
||||
DocumentSymbolAdapter,
|
||||
DocumentFormattingEditProvider,
|
||||
DocumentRangeFormattingEditProvider,
|
||||
DocumentColorAdapter,
|
||||
FoldingRangeAdapter,
|
||||
SelectionRangeAdapter
|
||||
} from '../common/lspLanguageFeatures';
|
||||
|
||||
export interface WorkerAccessor {
|
||||
(...more: Uri[]): Promise<JSONWorker>;
|
||||
}
|
||||
|
||||
export class JSONDiagnosticsAdapter extends DiagnosticsAdapter<JSONWorker> {
|
||||
constructor(languageId: string, worker: WorkerAccessor, defaults: LanguageServiceDefaults) {
|
||||
super(languageId, worker, defaults.onDidChange);
|
||||
|
||||
this._disposables.push(
|
||||
editor.onWillDisposeModel((model) => {
|
||||
this._resetSchema(model.uri);
|
||||
})
|
||||
);
|
||||
this._disposables.push(
|
||||
editor.onDidChangeModelLanguage((event) => {
|
||||
this._resetSchema(event.model.uri);
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
private _resetSchema(resource: Uri): void {
|
||||
this._worker().then((worker) => {
|
||||
worker.resetSchema(resource.toString());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export class JSONCompletionAdapter extends CompletionAdapter<JSONWorker> {
|
||||
constructor(worker: WorkerAccessor) {
|
||||
super(worker, [' ', ':', '"']);
|
||||
}
|
||||
}
|
||||
|
||||
export class JSONHoverAdapter extends HoverAdapter<JSONWorker> {}
|
||||
|
||||
export class JSONDocumentSymbolAdapter extends DocumentSymbolAdapter<JSONWorker> {}
|
||||
|
||||
export class JSONDocumentFormattingEditProvider extends DocumentFormattingEditProvider<JSONWorker> {}
|
||||
|
||||
export class JSONDocumentRangeFormattingEditProvider extends DocumentRangeFormattingEditProvider<JSONWorker> {}
|
||||
|
||||
export class JSONDocumentColorAdapter extends DocumentColorAdapter<JSONWorker> {}
|
||||
|
||||
export class JSONFoldingRangeAdapter extends FoldingRangeAdapter<JSONWorker> {}
|
||||
|
||||
export class JSONSelectionRangeAdapter extends SelectionRangeAdapter<JSONWorker> {}
|
||||
Loading…
Add table
Add a link
Reference in a new issue