diff --git a/packages/react/src/components/CodeMirror6.jsx b/packages/react/src/components/CodeMirror6.jsx index 920ed367..99e224b9 100644 --- a/packages/react/src/components/CodeMirror6.jsx +++ b/packages/react/src/components/CodeMirror6.jsx @@ -103,6 +103,7 @@ export default function CodeMirror({ theme, keybindings, isLineNumbersDisplayed, + isAutoCompletionEnabled, fontSize = 18, fontFamily = 'monospace', options, @@ -114,12 +115,14 @@ export default function CodeMirror({ }, [onChange], ); + const handleOnCreateEditor = useCallback( (view) => { onViewChanged?.(view); }, [onViewChanged], ); + const handleOnUpdate = useCallback( (viewUpdate) => { if (viewUpdate.selectionSet && onSelectionChange) { @@ -128,6 +131,7 @@ export default function CodeMirror({ }, [onSelectionChange], ); + const extensions = useMemo(() => { let bindings = { vim, @@ -138,6 +142,11 @@ export default function CodeMirror({ } return staticExtensions; }, [keybindings]); + + const setAutoCompletion = isAutoCompletionEnabled => isAutoCompletionEnabled ? + javascriptLanguage.data.of({ autocomplete: strudelAutocomplete }) : + autocompletion({ override: [] }) + return (
<_CodeMirror @@ -146,7 +155,7 @@ export default function CodeMirror({ onChange={handleOnChange} onCreateEditor={handleOnCreateEditor} onUpdate={handleOnUpdate} - extensions={extensions} + extensions={[ ...extensions, setAutoCompletion(isAutoCompletionEnabled) ]} basicSetup={{ lineNumbers: isLineNumbersDisplayed }} />
diff --git a/website/src/repl/Footer.jsx b/website/src/repl/Footer.jsx index c31e167a..191159c9 100644 --- a/website/src/repl/Footer.jsx +++ b/website/src/repl/Footer.jsx @@ -364,7 +364,15 @@ const fontFamilyOptions = { }; function SettingsTab({ scheduler }) { - const { theme, keybindings, isLineNumbersDisplayed, fontSize, fontFamily } = useSettings(); + const { + theme, + keybindings, + isLineNumbersDisplayed, + isAutoCompletionEnabled, + fontSize, + fontFamily + } = useSettings(); + return (
{/* @@ -406,7 +414,7 @@ function SettingsTab({ scheduler }) { />
-
+
settingsMap.setKey('isLineNumbersDisplayed', cbEvent.target.checked)} value={isLineNumbersDisplayed} /> + settingsMap.setKey('isAutoCompletionEnabled', cbEvent.target.checked)} + value={isAutoCompletionEnabled} + />