From d3a839603330868a3fdaa619ea6e6f389b38fe08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Forment?= Date: Wed, 15 Oct 2025 11:32:45 +0200 Subject: [PATCH] CSound syntax highlighting support --- package.json | 1 + pnpm-lock.yaml | 32 +++++++++++++++++++ src/App.svelte | 1 - src/lib/components/editor/Editor.svelte | 14 ++------ .../components/editor/EditorWithLogs.svelte | 3 -- 5 files changed, 35 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 631db64..6cd4e45 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "@codemirror/theme-one-dark": "^6.1.3", "@codemirror/view": "^6.38.6", "@csound/browser": "7.0.0-beta11", + "@hlolli/codemirror-lang-csound": "1.0.0-alpha10", "@replit/codemirror-vim": "^6.3.0", "codemirror": "^6.0.2", "lucide-svelte": "^0.545.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d6b3f59..27883fe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,6 +47,9 @@ importers: '@csound/browser': specifier: 7.0.0-beta11 version: 7.0.0-beta11 + '@hlolli/codemirror-lang-csound': + specifier: 1.0.0-alpha10 + version: 1.0.0-alpha10(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(codemirror@6.0.2) '@replit/codemirror-vim': specifier: ^6.3.0 version: 6.3.0(@codemirror/commands@6.9.0)(@codemirror/language@6.11.3)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6) @@ -118,6 +121,10 @@ packages: '@codemirror/state@6.5.2': resolution: {integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==} + '@codemirror/text@0.19.6': + resolution: {integrity: sha512-T9jnREMIygx+TPC1bOuepz18maGq/92q2a+n4qTqObKwvNMg+8cMTslb8yxeEDEq7S3kpgGWxgO1UWbQRij0dA==} + deprecated: As of 0.20.0, this package has been merged into @codemirror/state + '@codemirror/theme-one-dark@6.1.3': resolution: {integrity: sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==} @@ -136,6 +143,14 @@ packages: '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@hlolli/codemirror-lang-csound@1.0.0-alpha10': + resolution: {integrity: sha512-pcI++pcME4oShgy6teaGzHNWoW9Cp3zdFGH/W5L2EYTkyRA4x+0DK5E7hWRmDDIhdlJE0xqaCrU4GH3oeD1GAA==} + peerDependencies: + '@codemirror/language': 6.x + '@codemirror/state': 6.x + '@codemirror/view': 6.x + codemirror: 6.x + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -612,6 +627,9 @@ packages: ramda@0.28.0: resolution: {integrity: sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==} + ramda@0.30.1: + resolution: {integrity: sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==} + readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -840,6 +858,8 @@ snapshots: dependencies: '@marijn/find-cluster-break': 1.0.2 + '@codemirror/text@0.19.6': {} + '@codemirror/theme-one-dark@6.1.3': dependencies: '@codemirror/language': 6.11.3 @@ -883,6 +903,16 @@ snapshots: tslib: 2.8.1 optional: true + '@hlolli/codemirror-lang-csound@1.0.0-alpha10(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(codemirror@6.0.2)': + dependencies: + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/text': 0.19.6 + '@codemirror/view': 6.38.6 + codemirror: 6.0.2 + ramda: 0.30.1 + style-mod: 4.1.2 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -1279,6 +1309,8 @@ snapshots: ramda@0.28.0: {} + ramda@0.30.1: {} + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 diff --git a/src/App.svelte b/src/App.svelte index d4dfae5..f7b718f 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -340,7 +340,6 @@
void; onExecute?: (code: string, source: 'selection' | 'block' | 'document') => void; editorSettings: EditorSettingsStore; @@ -32,7 +29,6 @@ let { value = '', - language = 'javascript', onChange, onExecute, editorSettings @@ -41,12 +37,6 @@ let editorContainer: HTMLDivElement; let editorView: EditorView | null = null; - const languageExtensions = { - javascript: javascript(), - html: html(), - css: css() - }; - const lineNumbersCompartment = new Compartment(); const lineWrappingCompartment = new Compartment(); const vimCompartment = new Compartment(); @@ -116,7 +106,7 @@ doc: value, extensions: [ ...baseExtensions, - languageExtensions[language], + csoundMode({ fileType: 'csd' }), oneDark, evaluateKeymap, flashField(), diff --git a/src/lib/components/editor/EditorWithLogs.svelte b/src/lib/components/editor/EditorWithLogs.svelte index ac6bb07..afd1547 100644 --- a/src/lib/components/editor/EditorWithLogs.svelte +++ b/src/lib/components/editor/EditorWithLogs.svelte @@ -6,7 +6,6 @@ interface Props { value: string; - language?: 'javascript' | 'html' | 'css'; onChange?: (value: string) => void; onExecute?: (code: string, source: 'selection' | 'block' | 'document') => void; logs?: string[]; @@ -15,7 +14,6 @@ let { value = '', - language = 'javascript', onChange, onExecute, logs = [], @@ -83,7 +81,6 @@