UNPKG

monaco-sql-languages

Version:

SQL languages for the Monaco Editor, based on monaco-languages.

41 lines (40 loc) 1.69 kB
import { languages } from './fillers/monaco-editor-core'; import * as languageFeatures from './languageFeatures'; import { WorkerManager } from './workerManager'; export function setupLanguageMode(defaults) { const disposables = []; const providers = []; const client = new WorkerManager(defaults); disposables.push(client); const worker = (...uris) => { return client.getLanguageServiceWorker(...uris); }; function registerProviders() { const { languageId, modeConfiguration } = defaults; disposeAll(providers); if (modeConfiguration.diagnostics) { providers.push(new languageFeatures.DiagnosticsAdapter(languageId, worker, defaults)); } if (modeConfiguration.completionItems.enable) { providers.push(languages.registerCompletionItemProvider(languageId, new languageFeatures.CompletionAdapter(worker, defaults))); } if (modeConfiguration.references) { providers.push(languages.registerReferenceProvider(languageId, new languageFeatures.ReferenceAdapter(worker, defaults))); } if (modeConfiguration.definitions) { providers.push(languages.registerDefinitionProvider(languageId, new languageFeatures.DefinitionAdapter(worker, defaults))); } } registerProviders(); disposables.push(asDisposable(providers)); return asDisposable(disposables); } function asDisposable(disposables) { return { dispose: () => disposeAll(disposables) }; } function disposeAll(disposables) { var _a; while (disposables.length) { (_a = disposables.pop()) === null || _a === void 0 ? void 0 : _a.dispose(); } }