monaco-sql-languages
Version:
SQL languages for the Monaco Editor, based on monaco-languages.
41 lines (40 loc) • 1.69 kB
JavaScript
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();
}
}