monaco-sql-languages
Version:
SQL languages for the Monaco Editor, based on monaco-languages.
86 lines (85 loc) • 4.77 kB
JavaScript
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
import { languages } from './fillers/monaco-editor-core';
import { LanguageServiceDefaultsImpl, modeConfigurationDefault } from './monaco.contribution';
const featureLoadedMap = new Map();
const languageModesMap = new Map();
const registerListenerMap = new Map();
const languageDefaultsMap = new Map();
function setupMode(defaults) {
const languageId = defaults.languageId;
import('./setupLanguageMode').then((mode) => {
var _a;
if (languageModesMap.has(languageId)) {
(_a = languageModesMap.get(languageId)) === null || _a === void 0 ? void 0 : _a.dispose();
}
languageModesMap.set(languageId, mode.setupLanguageMode(defaults));
});
}
export function setupLanguageFeatures(languageId, configuration) {
var _a;
if (typeof configuration !== 'object') {
return;
}
const { preprocessCode } = configuration, rest = __rest(configuration, ["preprocessCode"]);
const modeConf = processConfiguration(languageId, rest);
// Set up before language load
const defaults = new LanguageServiceDefaultsImpl(languageId, modeConf, preprocessCode);
languageDefaultsMap.set(languageId, defaults);
if (featureLoadedMap.get(languageId)) {
setupMode(defaults);
}
else {
// Avoid calling setup multiple times when language loaded
if (registerListenerMap.has(languageId)) {
(_a = registerListenerMap.get(languageId)) === null || _a === void 0 ? void 0 : _a.dispose();
}
registerListenerMap.set(languageId, languages.onLanguage(languageId, () => {
setupMode(defaults);
featureLoadedMap.set(languageId, true);
}));
}
}
function processConfiguration(languageId, configuration) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
const defaults = languageDefaultsMap.get(languageId);
const diagnostics = typeof configuration.diagnostics === 'boolean'
? configuration.diagnostics
: ((_a = defaults === null || defaults === void 0 ? void 0 : defaults.modeConfiguration.diagnostics) !== null && _a !== void 0 ? _a : modeConfigurationDefault.diagnostics);
const completionEnable = typeof configuration.completionItems === 'boolean'
? configuration.completionItems
: ((_b = defaults === null || defaults === void 0 ? void 0 : defaults.modeConfiguration.completionItems.enable) !== null && _b !== void 0 ? _b : modeConfigurationDefault.completionItems.enable);
const completionService = typeof configuration.completionItems !== 'boolean' &&
typeof ((_c = configuration.completionItems) === null || _c === void 0 ? void 0 : _c.completionService) === 'function'
? (_d = configuration.completionItems) === null || _d === void 0 ? void 0 : _d.completionService
: ((_e = defaults === null || defaults === void 0 ? void 0 : defaults.modeConfiguration.completionItems.completionService) !== null && _e !== void 0 ? _e : modeConfigurationDefault.completionItems.completionService);
const triggerCharacters = typeof configuration.completionItems !== 'boolean' &&
Array.isArray((_f = configuration.completionItems) === null || _f === void 0 ? void 0 : _f.triggerCharacters)
? configuration.completionItems.triggerCharacters
: ((_g = defaults === null || defaults === void 0 ? void 0 : defaults.modeConfiguration.completionItems.triggerCharacters) !== null && _g !== void 0 ? _g : modeConfigurationDefault.completionItems.triggerCharacters);
const references = typeof configuration.references === 'boolean'
? configuration.references
: ((_h = defaults === null || defaults === void 0 ? void 0 : defaults.modeConfiguration.references) !== null && _h !== void 0 ? _h : modeConfigurationDefault.references);
const definitions = typeof configuration.definitions === 'boolean'
? configuration.definitions
: ((_j = defaults === null || defaults === void 0 ? void 0 : defaults.modeConfiguration.definitions) !== null && _j !== void 0 ? _j : modeConfigurationDefault.definitions);
return {
diagnostics,
completionItems: {
enable: completionEnable,
completionService,
triggerCharacters
},
references,
definitions
};
}