From 2d2d0cabb3ab66c3ba119e09e4af06ee9fa74b47 Mon Sep 17 00:00:00 2001 From: Roipoussiere Date: Fri, 9 Jun 2023 16:38:48 +0200 Subject: [PATCH] Add option in settings to enable autocompletion --- packages/react/src/components/CodeMirror6.jsx | 11 ++++++++++- website/src/repl/Footer.jsx | 17 +++++++++++++++-- website/src/repl/Repl.jsx | 10 +++++++++- website/src/settings.mjs | 2 ++ 4 files changed, 36 insertions(+), 4 deletions(-) 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} + />