diff --git a/src/lib/components/Editor/language.ts b/src/lib/components/Editor/language.ts index a20c368..e65bc94 100644 --- a/src/lib/components/Editor/language.ts +++ b/src/lib/components/Editor/language.ts @@ -9,7 +9,7 @@ export function setupLanguage( operators: string[] = [] ) { monaco.languages.register({ id }); - monaco.languages.setMonarchTokensProvider('clickhouse', { + monaco.languages.setMonarchTokensProvider(id, { ignoreCase: true, keywords: keywords.map((k) => k.split(' ')[0]), functions: functions, @@ -90,5 +90,5 @@ export function setupLanguage( } }; - monaco.languages.registerCompletionItemProvider('clickhouse', sql); + monaco.languages.registerCompletionItemProvider(id, sql); } diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index fb55a26..7f86908 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -62,21 +62,22 @@ let history = $state.raw([]); let queries = $state.raw([]); - $effect( - () => - void engine.getSchema().then((t) => { - tables = t; + async function setupEditor() { + const [t, udfs] = await Promise.all([engine.getSchema(), engine.getUDFs()]); + tables = t; + + setupLanguage( + 'clickhouse', + keywords, + [...functions, ...udfs], + tables.map((t) => t.name), + types, + operators + ); + } + + setupEditor(); - setupLanguage( - 'clickhouse', - keywords, - functions, - tables.map((t) => t.name), - types, - operators - ); - }) - ); $effect(() => void historyRepository.getAll().then((entries) => (history = entries))); $effect(() => void queryRepository.getAll().then((q) => (queries = q)));