1import { Monaco } from '@grafana/ui'; 2import { CompletionItemProvider } from './completion/CompletionItemProvider'; 3import language from './definition'; 4 5export const registerLanguage = (monaco: Monaco, sqlCompletionItemProvider: CompletionItemProvider) => { 6 const { id, loader } = language; 7 8 const languages = monaco.languages.getLanguages(); 9 if (languages.find((l) => l.id === id)) { 10 return; 11 } 12 13 monaco.languages.register({ id }); 14 loader().then((monarch) => { 15 monaco.languages.setMonarchTokensProvider(id, monarch.language); 16 monaco.languages.setLanguageConfiguration(id, monarch.conf); 17 monaco.languages.registerCompletionItemProvider(id, sqlCompletionItemProvider.getCompletionProvider(monaco)); 18 }); 19}; 20