Alex Dima 3 лет назад
Родитель
Сommit
a33b7cee5a
6 измененных файлов с 91 добавлено и 225 удалено
  1. 17 13
      src/css/cssMode.ts
  2. 0 55
      src/css/languageFeatures.ts
  3. 33 32
      src/html/htmlMode.ts
  4. 0 47
      src/html/languageFeatures.ts
  5. 41 12
      src/json/jsonMode.ts
  6. 0 66
      src/json/languageFeatures.ts

+ 17 - 13
src/css/cssMode.ts

@@ -6,7 +6,7 @@
 import { WorkerManager } from './workerManager';
 import { WorkerManager } from './workerManager';
 import type { CSSWorker } from './cssWorker';
 import type { CSSWorker } from './cssWorker';
 import { LanguageServiceDefaults } from './monaco.contribution';
 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';
 import { Uri, IDisposable, languages } from '../fillers/monaco-editor-core';
 
 
 export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
@@ -16,7 +16,9 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 	const client = new WorkerManager(defaults);
 	const client = new WorkerManager(defaults);
 	disposables.push(client);
 	disposables.push(client);
 
 
-	const worker: languageFeatures.WorkerAccessor = (...uris: Uri[]): Promise<CSSWorker> => {
+	const worker: languageFeatures.WorkerAccessor<CSSWorker> = (
+		...uris: Uri[]
+	): Promise<CSSWorker> => {
 		return client.getLanguageServiceWorker(...uris);
 		return client.getLanguageServiceWorker(...uris);
 	};
 	};
 
 
@@ -29,20 +31,20 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 			providers.push(
 			providers.push(
 				languages.registerCompletionItemProvider(
 				languages.registerCompletionItemProvider(
 					languageId,
 					languageId,
-					new languageFeatures.CSSCompletionAdapter(worker)
+					new languageFeatures.CompletionAdapter(worker, ['/', '-', ':'])
 				)
 				)
 			);
 			);
 		}
 		}
 		if (modeConfiguration.hovers) {
 		if (modeConfiguration.hovers) {
 			providers.push(
 			providers.push(
-				languages.registerHoverProvider(languageId, new languageFeatures.CSSHoverAdapter(worker))
+				languages.registerHoverProvider(languageId, new languageFeatures.HoverAdapter(worker))
 			);
 			);
 		}
 		}
 		if (modeConfiguration.documentHighlights) {
 		if (modeConfiguration.documentHighlights) {
 			providers.push(
 			providers.push(
 				languages.registerDocumentHighlightProvider(
 				languages.registerDocumentHighlightProvider(
 					languageId,
 					languageId,
-					new languageFeatures.CSSDocumentHighlightAdapter(worker)
+					new languageFeatures.DocumentHighlightAdapter(worker)
 				)
 				)
 			);
 			);
 		}
 		}
@@ -50,7 +52,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 			providers.push(
 			providers.push(
 				languages.registerDefinitionProvider(
 				languages.registerDefinitionProvider(
 					languageId,
 					languageId,
-					new languageFeatures.CSSDefinitionAdapter(worker)
+					new languageFeatures.DefinitionAdapter(worker)
 				)
 				)
 			);
 			);
 		}
 		}
@@ -58,7 +60,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 			providers.push(
 			providers.push(
 				languages.registerReferenceProvider(
 				languages.registerReferenceProvider(
 					languageId,
 					languageId,
-					new languageFeatures.CSSReferenceAdapter(worker)
+					new languageFeatures.ReferenceAdapter(worker)
 				)
 				)
 			);
 			);
 		}
 		}
@@ -66,20 +68,20 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 			providers.push(
 			providers.push(
 				languages.registerDocumentSymbolProvider(
 				languages.registerDocumentSymbolProvider(
 					languageId,
 					languageId,
-					new languageFeatures.CSSDocumentSymbolAdapter(worker)
+					new languageFeatures.DocumentSymbolAdapter(worker)
 				)
 				)
 			);
 			);
 		}
 		}
 		if (modeConfiguration.rename) {
 		if (modeConfiguration.rename) {
 			providers.push(
 			providers.push(
-				languages.registerRenameProvider(languageId, new languageFeatures.CSSRenameAdapter(worker))
+				languages.registerRenameProvider(languageId, new languageFeatures.RenameAdapter(worker))
 			);
 			);
 		}
 		}
 		if (modeConfiguration.colors) {
 		if (modeConfiguration.colors) {
 			providers.push(
 			providers.push(
 				languages.registerColorProvider(
 				languages.registerColorProvider(
 					languageId,
 					languageId,
-					new languageFeatures.CSSDocumentColorAdapter(worker)
+					new languageFeatures.DocumentColorAdapter(worker)
 				)
 				)
 			);
 			);
 		}
 		}
@@ -87,18 +89,20 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 			providers.push(
 			providers.push(
 				languages.registerFoldingRangeProvider(
 				languages.registerFoldingRangeProvider(
 					languageId,
 					languageId,
-					new languageFeatures.CSSFoldingRangeAdapter(worker)
+					new languageFeatures.FoldingRangeAdapter(worker)
 				)
 				)
 			);
 			);
 		}
 		}
 		if (modeConfiguration.diagnostics) {
 		if (modeConfiguration.diagnostics) {
-			providers.push(new languageFeatures.CSSDiagnosticsAdapter(languageId, worker, defaults));
+			providers.push(
+				new languageFeatures.DiagnosticsAdapter(languageId, worker, defaults.onDidChange)
+			);
 		}
 		}
 		if (modeConfiguration.selectionRanges) {
 		if (modeConfiguration.selectionRanges) {
 			providers.push(
 			providers.push(
 				languages.registerSelectionRangeProvider(
 				languages.registerSelectionRangeProvider(
 					languageId,
 					languageId,
-					new languageFeatures.CSSSelectionRangeAdapter(worker)
+					new languageFeatures.SelectionRangeAdapter(worker)
 				)
 				)
 			);
 			);
 		}
 		}

+ 0 - 55
src/css/languageFeatures.ts

@@ -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> {}

+ 33 - 32
src/html/htmlMode.ts

@@ -6,53 +6,58 @@
 import { WorkerManager } from './workerManager';
 import { WorkerManager } from './workerManager';
 import type { HTMLWorker } from './htmlWorker';
 import type { HTMLWorker } from './htmlWorker';
 import { LanguageServiceDefaults } from './monaco.contribution';
 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';
 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 {
 export function setupMode1(defaults: LanguageServiceDefaults): void {
 	const client = new WorkerManager(defaults);
 	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);
 		return client.getLanguageServiceWorker(...uris);
 	};
 	};
 
 
 	let languageId = defaults.languageId;
 	let languageId = defaults.languageId;
 
 
 	// all modes
 	// 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(
 	languages.registerDocumentHighlightProvider(
 		languageId,
 		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(
 	languages.registerFoldingRangeProvider(
 		languageId,
 		languageId,
-		new languageFeatures.HTMLFoldingRangeAdapter(worker)
+		new languageFeatures.FoldingRangeAdapter(worker)
 	);
 	);
 	languages.registerDocumentSymbolProvider(
 	languages.registerDocumentSymbolProvider(
 		languageId,
 		languageId,
-		new languageFeatures.HTMLDocumentSymbolAdapter(worker)
+		new languageFeatures.DocumentSymbolAdapter(worker)
 	);
 	);
 	languages.registerSelectionRangeProvider(
 	languages.registerSelectionRangeProvider(
 		languageId,
 		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
 	// only html
 	if (languageId === 'html') {
 	if (languageId === 'html') {
 		languages.registerDocumentFormattingEditProvider(
 		languages.registerDocumentFormattingEditProvider(
 			languageId,
 			languageId,
-			new languageFeatures.HTMLDocumentFormattingEditProvider(worker)
+			new languageFeatures.DocumentFormattingEditProvider(worker)
 		);
 		);
 		languages.registerDocumentRangeFormattingEditProvider(
 		languages.registerDocumentRangeFormattingEditProvider(
 			languageId,
 			languageId,
-			new languageFeatures.HTMLDocumentRangeFormattingEditProvider(worker)
+			new languageFeatures.DocumentRangeFormattingEditProvider(worker)
 		);
 		);
 	}
 	}
 }
 }
@@ -64,7 +69,9 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 	const client = new WorkerManager(defaults);
 	const client = new WorkerManager(defaults);
 	disposables.push(client);
 	disposables.push(client);
 
 
-	const worker: languageFeatures.WorkerAccessor = (...uris: Uri[]): Promise<HTMLWorker> => {
+	const worker: languageFeatures.WorkerAccessor<HTMLWorker> = (
+		...uris: Uri[]
+	): Promise<HTMLWorker> => {
 		return client.getLanguageServiceWorker(...uris);
 		return client.getLanguageServiceWorker(...uris);
 	};
 	};
 
 
@@ -75,51 +82,45 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 
 
 		if (modeConfiguration.completionItems) {
 		if (modeConfiguration.completionItems) {
 			providers.push(
 			providers.push(
-				languages.registerCompletionItemProvider(
-					languageId,
-					new languageFeatures.HTMLCompletionAdapter(worker)
-				)
+				languages.registerCompletionItemProvider(languageId, new HTMLCompletionAdapter(worker))
 			);
 			);
 		}
 		}
 		if (modeConfiguration.hovers) {
 		if (modeConfiguration.hovers) {
 			providers.push(
 			providers.push(
-				languages.registerHoverProvider(languageId, new languageFeatures.HTMLHoverAdapter(worker))
+				languages.registerHoverProvider(languageId, new languageFeatures.HoverAdapter(worker))
 			);
 			);
 		}
 		}
 		if (modeConfiguration.documentHighlights) {
 		if (modeConfiguration.documentHighlights) {
 			providers.push(
 			providers.push(
 				languages.registerDocumentHighlightProvider(
 				languages.registerDocumentHighlightProvider(
 					languageId,
 					languageId,
-					new languageFeatures.HTMLDocumentHighlightAdapter(worker)
+					new languageFeatures.DocumentHighlightAdapter(worker)
 				)
 				)
 			);
 			);
 		}
 		}
 		if (modeConfiguration.links) {
 		if (modeConfiguration.links) {
 			providers.push(
 			providers.push(
-				languages.registerLinkProvider(
-					languageId,
-					new languageFeatures.HTMLDocumentLinkAdapter(worker)
-				)
+				languages.registerLinkProvider(languageId, new languageFeatures.DocumentLinkAdapter(worker))
 			);
 			);
 		}
 		}
 		if (modeConfiguration.documentSymbols) {
 		if (modeConfiguration.documentSymbols) {
 			providers.push(
 			providers.push(
 				languages.registerDocumentSymbolProvider(
 				languages.registerDocumentSymbolProvider(
 					languageId,
 					languageId,
-					new languageFeatures.HTMLDocumentSymbolAdapter(worker)
+					new languageFeatures.DocumentSymbolAdapter(worker)
 				)
 				)
 			);
 			);
 		}
 		}
 		if (modeConfiguration.rename) {
 		if (modeConfiguration.rename) {
 			providers.push(
 			providers.push(
-				languages.registerRenameProvider(languageId, new languageFeatures.HTMLRenameAdapter(worker))
+				languages.registerRenameProvider(languageId, new languageFeatures.RenameAdapter(worker))
 			);
 			);
 		}
 		}
 		if (modeConfiguration.foldingRanges) {
 		if (modeConfiguration.foldingRanges) {
 			providers.push(
 			providers.push(
 				languages.registerFoldingRangeProvider(
 				languages.registerFoldingRangeProvider(
 					languageId,
 					languageId,
-					new languageFeatures.HTMLFoldingRangeAdapter(worker)
+					new languageFeatures.FoldingRangeAdapter(worker)
 				)
 				)
 			);
 			);
 		}
 		}
@@ -127,7 +128,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 			providers.push(
 			providers.push(
 				languages.registerSelectionRangeProvider(
 				languages.registerSelectionRangeProvider(
 					languageId,
 					languageId,
-					new languageFeatures.HTMLSelectionRangeAdapter(worker)
+					new languageFeatures.SelectionRangeAdapter(worker)
 				)
 				)
 			);
 			);
 		}
 		}
@@ -135,7 +136,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 			providers.push(
 			providers.push(
 				languages.registerDocumentFormattingEditProvider(
 				languages.registerDocumentFormattingEditProvider(
 					languageId,
 					languageId,
-					new languageFeatures.HTMLDocumentFormattingEditProvider(worker)
+					new languageFeatures.DocumentFormattingEditProvider(worker)
 				)
 				)
 			);
 			);
 		}
 		}
@@ -143,7 +144,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 			providers.push(
 			providers.push(
 				languages.registerDocumentRangeFormattingEditProvider(
 				languages.registerDocumentRangeFormattingEditProvider(
 					languageId,
 					languageId,
-					new languageFeatures.HTMLDocumentRangeFormattingEditProvider(worker)
+					new languageFeatures.DocumentRangeFormattingEditProvider(worker)
 				)
 				)
 			);
 			);
 		}
 		}

+ 0 - 47
src/html/languageFeatures.ts

@@ -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> {}

+ 41 - 12
src/json/jsonMode.ts

@@ -6,9 +6,36 @@
 import { WorkerManager } from './workerManager';
 import { WorkerManager } from './workerManager';
 import type { JSONWorker } from './jsonWorker';
 import type { JSONWorker } from './jsonWorker';
 import { LanguageServiceDefaults } from './monaco.contribution';
 import { LanguageServiceDefaults } from './monaco.contribution';
-import * as languageFeatures from './languageFeatures';
+import * as languageFeatures from '../common/lspLanguageFeatures';
 import { createTokenizationSupport } from './tokenization';
 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 {
 export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 	const disposables: IDisposable[] = [];
 	const disposables: IDisposable[] = [];
@@ -17,7 +44,9 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 	const client = new WorkerManager(defaults);
 	const client = new WorkerManager(defaults);
 	disposables.push(client);
 	disposables.push(client);
 
 
-	const worker: languageFeatures.WorkerAccessor = (...uris: Uri[]): Promise<JSONWorker> => {
+	const worker: languageFeatures.WorkerAccessor<JSONWorker> = (
+		...uris: Uri[]
+	): Promise<JSONWorker> => {
 		return client.getLanguageServiceWorker(...uris);
 		return client.getLanguageServiceWorker(...uris);
 	};
 	};
 
 
@@ -30,7 +59,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 			providers.push(
 			providers.push(
 				languages.registerDocumentFormattingEditProvider(
 				languages.registerDocumentFormattingEditProvider(
 					languageId,
 					languageId,
-					new languageFeatures.JSONDocumentFormattingEditProvider(worker)
+					new languageFeatures.DocumentFormattingEditProvider(worker)
 				)
 				)
 			);
 			);
 		}
 		}
@@ -38,7 +67,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 			providers.push(
 			providers.push(
 				languages.registerDocumentRangeFormattingEditProvider(
 				languages.registerDocumentRangeFormattingEditProvider(
 					languageId,
 					languageId,
-					new languageFeatures.JSONDocumentRangeFormattingEditProvider(worker)
+					new languageFeatures.DocumentRangeFormattingEditProvider(worker)
 				)
 				)
 			);
 			);
 		}
 		}
@@ -46,20 +75,20 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 			providers.push(
 			providers.push(
 				languages.registerCompletionItemProvider(
 				languages.registerCompletionItemProvider(
 					languageId,
 					languageId,
-					new languageFeatures.JSONCompletionAdapter(worker)
+					new languageFeatures.CompletionAdapter(worker, [' ', ':', '"'])
 				)
 				)
 			);
 			);
 		}
 		}
 		if (modeConfiguration.hovers) {
 		if (modeConfiguration.hovers) {
 			providers.push(
 			providers.push(
-				languages.registerHoverProvider(languageId, new languageFeatures.JSONHoverAdapter(worker))
+				languages.registerHoverProvider(languageId, new languageFeatures.HoverAdapter(worker))
 			);
 			);
 		}
 		}
 		if (modeConfiguration.documentSymbols) {
 		if (modeConfiguration.documentSymbols) {
 			providers.push(
 			providers.push(
 				languages.registerDocumentSymbolProvider(
 				languages.registerDocumentSymbolProvider(
 					languageId,
 					languageId,
-					new languageFeatures.JSONDocumentSymbolAdapter(worker)
+					new languageFeatures.DocumentSymbolAdapter(worker)
 				)
 				)
 			);
 			);
 		}
 		}
@@ -70,7 +99,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 			providers.push(
 			providers.push(
 				languages.registerColorProvider(
 				languages.registerColorProvider(
 					languageId,
 					languageId,
-					new languageFeatures.JSONDocumentColorAdapter(worker)
+					new languageFeatures.DocumentColorAdapter(worker)
 				)
 				)
 			);
 			);
 		}
 		}
@@ -78,18 +107,18 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
 			providers.push(
 			providers.push(
 				languages.registerFoldingRangeProvider(
 				languages.registerFoldingRangeProvider(
 					languageId,
 					languageId,
-					new languageFeatures.JSONFoldingRangeAdapter(worker)
+					new languageFeatures.FoldingRangeAdapter(worker)
 				)
 				)
 			);
 			);
 		}
 		}
 		if (modeConfiguration.diagnostics) {
 		if (modeConfiguration.diagnostics) {
-			providers.push(new languageFeatures.JSONDiagnosticsAdapter(languageId, worker, defaults));
+			providers.push(new JSONDiagnosticsAdapter(languageId, worker, defaults));
 		}
 		}
 		if (modeConfiguration.selectionRanges) {
 		if (modeConfiguration.selectionRanges) {
 			providers.push(
 			providers.push(
 				languages.registerSelectionRangeProvider(
 				languages.registerSelectionRangeProvider(
 					languageId,
 					languageId,
-					new languageFeatures.JSONSelectionRangeAdapter(worker)
+					new languageFeatures.SelectionRangeAdapter(worker)
 				)
 				)
 			);
 			);
 		}
 		}

+ 0 - 66
src/json/languageFeatures.ts

@@ -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> {}