Skip to content

Commit

Permalink
add checkbox in settings to enable line wrapping
Browse files Browse the repository at this point in the history
  • Loading branch information
roipoussiere committed Jun 15, 2023
1 parent aa51c2b commit f37a220
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 11 deletions.
15 changes: 7 additions & 8 deletions packages/react/src/components/CodeMirror6.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -88,13 +88,7 @@ const highlightField = StateField.define({
provide: (f) => EditorView.decorations.from(f),
});

const staticExtensions = [
javascript(),
highlightField,
flashField,
javascriptLanguage.data.of({ autocomplete: strudelAutocomplete }),
EditorView.lineWrapping,
];
const staticExtensions = [javascript(), highlightField, flashField];

export default function CodeMirror({
value,
Expand All @@ -105,6 +99,7 @@ export default function CodeMirror({
keybindings,
isLineNumbersDisplayed,
isAutoCompletionEnabled,
isLineWrappingEnabled,
fontSize = 18,
fontFamily = 'monospace',
options,
Expand Down Expand Up @@ -150,8 +145,12 @@ export default function CodeMirror({
_extensions.push(autocompletion({ override: [] }));
}

if (isLineWrappingEnabled) {
_extensions.push(EditorView.lineWrapping);
}

return _extensions;
}, [keybindings, isAutoCompletionEnabled]);
}, [keybindings, isAutoCompletionEnabled, isLineWrappingEnabled]);

return (
<div style={{ fontSize, fontFamily }} className="w-full">
Expand Down
17 changes: 15 additions & 2 deletions website/src/repl/Footer.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -364,7 +364,15 @@ const fontFamilyOptions = {
};

function SettingsTab({ scheduler }) {
const { theme, keybindings, isLineNumbersDisplayed, isAutoCompletionEnabled, fontSize, fontFamily } = useSettings();
const {
theme,
keybindings,
isLineNumbersDisplayed,
isAutoCompletionEnabled,
isLineWrappingEnabled,
fontSize,
fontFamily,
} = useSettings();

return (
<div className="text-foreground p-4 space-y-4">
Expand Down Expand Up @@ -407,7 +415,7 @@ function SettingsTab({ scheduler }) {
/>
</FormItem>
</div>
<div className="grid grid-cols-1 md:grid-cols-3 gap-4">
<div className="grid grid-cols-1 md:grid-cols-4 gap-4">
<FormItem label="Keybindings">
<ButtonGroup
value={keybindings}
Expand All @@ -425,6 +433,11 @@ function SettingsTab({ scheduler }) {
onChange={(cbEvent) => settingsMap.setKey('isAutoCompletionEnabled', cbEvent.target.checked)}
value={isAutoCompletionEnabled}
/>
<Checkbox
label="Enable line wrapping"
onChange={(cbEvent) => settingsMap.setKey('isLineWrappingEnabled', cbEvent.target.checked)}
value={isLineWrappingEnabled}
/>
</div>
<FormItem label="Reset Settings">
<button
Expand Down
11 changes: 10 additions & 1 deletion website/src/repl/Repl.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,15 @@ export function Repl({ embedded = false }) {
const [lastShared, setLastShared] = useState();
const [pending, setPending] = useState(true);

const { theme, keybindings, fontSize, fontFamily, isLineNumbersDisplayed, isAutoCompletionEnabled } = useSettings();
const {
theme,
keybindings,
fontSize,
fontFamily,
isLineNumbersDisplayed,
isAutoCompletionEnabled,
isLineWrappingEnabled,
} = useSettings();

const { code, setCode, scheduler, evaluate, activateCode, isDirty, activeCode, pattern, started, stop, error } =
useStrudel({
Expand Down Expand Up @@ -273,6 +281,7 @@ export function Repl({ embedded = false }) {
keybindings={keybindings}
isLineNumbersDisplayed={isLineNumbersDisplayed}
isAutoCompletionEnabled={isAutoCompletionEnabled}
isLineWrappingEnabled={isLineWrappingEnabled}
fontSize={fontSize}
fontFamily={fontFamily}
onChange={handleChangeCode}
Expand Down
2 changes: 2 additions & 0 deletions website/src/settings.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ export const defaultSettings = {
keybindings: 'codemirror',
isLineNumbersDisplayed: true,
isAutoCompletionEnabled: false,
isLineWrappingEnabled: false,
theme: 'strudelTheme',
fontFamily: 'monospace',
fontSize: 18,
Expand All @@ -23,6 +24,7 @@ export function useSettings() {
isZen: [true, 'true'].includes(state.isZen) ? true : false,
isLineNumbersDisplayed: [true, 'true'].includes(state.isLineNumbersDisplayed) ? true : false,
isAutoCompletionEnabled: [true, 'true'].includes(state.isAutoCompletionEnabled) ? true : false,
isLineWrappingEnabled: [true, 'true'].includes(state.isLineWrappingEnabled) ? true : false,
fontSize: Number(state.fontSize),
};
}
Expand Down

0 comments on commit f37a220

Please sign in to comment.