From 2cabc3e3030f3a41299fe29ad0a8597acb564ed3 Mon Sep 17 00:00:00 2001 From: SirBlobby Date: Wed, 22 Jul 2026 18:07:19 -0400 Subject: [PATCH] Harden Typst wasm parser fallback against panics --- src/lib/components/Editor.svelte | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/lib/components/Editor.svelte b/src/lib/components/Editor.svelte index 04d6547..69b27cf 100644 --- a/src/lib/components/Editor.svelte +++ b/src/lib/components/Editor.svelte @@ -70,6 +70,12 @@ const isToml = $derived(filePath.toLowerCase().endsWith(".toml")); + function disableTypstLanguage() { + queueMicrotask(() => { + view?.dispatch({ effects: languageSlot.reconfigure([]) }); + }); + } + function resilientSync(parser: any) { return StateField.define({ create: () => null, @@ -78,7 +84,11 @@ transaction.startState.facet(language) !== transaction.state.facet(language) ) { - parser.clearParser(); + try { + parser.clearParser(); + } catch { + disableTypstLanguage(); + } return null; } @@ -94,7 +104,13 @@ for (const edit of edits.edits) parser.applyTreeEdit(edit); }); } catch { - parser.clearParser(); + try { + parser.clearParser(); + } catch { + // The wasm parser instance panicked and is no longer usable. + // Drop syntax highlighting rather than crash on every keystroke. + disableTypstLanguage(); + } } return null;