monaco-sql-languages
Version:
SQL languages for the Monaco Editor, based on monaco-languages.
72 lines (71 loc) • 2.56 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 completionSnippets() {
return this._modeConfiguration.completionItems.snippets;
}
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, _entities, snippets) {
if (!suggestions) {
return Promise.resolve([]);
}
const { keywords } = suggestions;
const keywordsCompletionItems = keywords.map((kw) => ({
label: kw,
kind: languages.CompletionItemKind.Keyword,
detail: 'keyword'
}));
const snippetCompletionItems = (snippets === null || snippets === void 0 ? void 0 : snippets.map((item) => ({
label: item.label || item.prefix,
kind: languages.CompletionItemKind.Snippet,
filterText: item.prefix,
insertText: item.insertText,
insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet,
detail: item.description || 'snippet',
documentation: item.insertText
}))) || [];
return Promise.resolve([...keywordsCompletionItems, ...snippetCompletionItems]);
};
export const modeConfigurationDefault = {
completionItems: {
snippets: [],
enable: true,
completionService: defaultCompletionService,
triggerCharacters: ['.', ' ']
},
diagnostics: true,
definitions: true,
references: true
};