UNPKG

monaco-sql-languages

Version:

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

72 lines (71 loc) 2.56 kB
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 };