monaco-sql-languages
Version:
SQL languages for the Monaco Editor, based on monaco-languages.
59 lines (58 loc) • 1.92 kB
JavaScript
import { Emitter, languages } from './fillers/monaco-editor-core';
export class LanguageServiceDefaultsImpl {
constructor(languageId, modeConfiguration, preprocessCode) {
this._onDidChange = new Emitter();
this._languageId = languageId;
this.setModeConfiguration(modeConfiguration);
this._preprocessCode = preprocessCode !== null && preprocessCode !== void 0 ? preprocessCode : null;
}
get onDidChange() {
return this._onDidChange.event;
}
get languageId() {
return this._languageId;
}
get modeConfiguration() {
return this._modeConfiguration;
}
get completionService() {
return this._modeConfiguration.completionItems.completionService;
}
get triggerCharacters() {
return this._modeConfiguration.completionItems.triggerCharacters;
}
get preprocessCode() {
return this._preprocessCode;
}
setModeConfiguration(modeConfiguration) {
this._modeConfiguration = modeConfiguration || Object.create(null);
this._onDidChange.fire(this);
}
}
/**
* A built-in completion service.
* It will invoke when there is no external completionService.
* It will only build completion items of keywords.
*/
export const defaultCompletionService = function (_model, _position, _context, suggestions) {
if (!suggestions) {
return Promise.resolve([]);
}
const { keywords } = suggestions;
const keywordsCompletionItems = keywords.map((kw) => ({
label: kw,
kind: languages.CompletionItemKind.Keyword,
detail: 'keyword'
}));
return Promise.resolve(keywordsCompletionItems);
};
export const modeConfigurationDefault = {
completionItems: {
enable: true,
completionService: defaultCompletionService,
triggerCharacters: ['.', ' ']
},
diagnostics: true,
definitions: true,
references: true
};