diff --git a/packages/ui/src/lib/monaco/setup.ts b/packages/ui/src/lib/monaco/setup.ts index bbd93afb..955feb61 100644 --- a/packages/ui/src/lib/monaco/setup.ts +++ b/packages/ui/src/lib/monaco/setup.ts @@ -118,8 +118,10 @@ function getContributionModuleId(languageId: string): string | null { if (id === "html") return "vs/language/html/monaco.contribution" // Basic tokenizers - if (id === "toml") return "vs/basic-languages/toml/toml.contribution" - return `vs/basic-languages/${id}/${id}.contribution` + // Monaco's `min/vs/basic-languages//` ships `.js` (no `*.contribution.js`). + // Loading the tokenizer module is enough; it registers itself with the language service. + if (id === "toml") return "vs/basic-languages/toml/toml" + return `vs/basic-languages/${id}/${id}` } const loadedContributions = new Set() @@ -134,12 +136,14 @@ export async function ensureMonacoLanguageLoaded(languageId: string): Promise { + let loaded = false try { await requireAsync([moduleId]) + loaded = true } catch { // ignore } finally { - loadedContributions.add(moduleId) + if (loaded) loadedContributions.add(moduleId) pendingContributions.delete(moduleId) } })()