CSound syntax highlighting support

This commit is contained in:
2025-10-15 11:32:45 +02:00
parent 65c3422610
commit d3a8396033
5 changed files with 35 additions and 16 deletions

View File

@ -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",

32
pnpm-lock.yaml generated
View File

@ -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

View File

@ -340,7 +340,6 @@
<div class="editor-area">
<EditorWithLogs
value={projectEditor.content}
language="javascript"
onChange={handleEditorChange}
onExecute={handleExecute}
logs={interpreterLogs}

View File

@ -8,9 +8,7 @@
import { autocompletion, completionKeymap, closeBrackets, closeBracketsKeymap } from '@codemirror/autocomplete';
import { foldGutter, indentOnInput, syntaxHighlighting, defaultHighlightStyle, bracketMatching, foldKeymap } from '@codemirror/language';
import { lintKeymap } from '@codemirror/lint';
import { javascript } from '@codemirror/lang-javascript';
import { html } from '@codemirror/lang-html';
import { css } from '@codemirror/lang-css';
import { csoundMode } from '@hlolli/codemirror-lang-csound';
import { oneDark } from '@codemirror/theme-one-dark';
import { vim } from '@replit/codemirror-vim';
import type { EditorSettingsStore } from '../../stores/editorSettings';
@ -24,7 +22,6 @@
interface Props {
value: string;
language?: 'javascript' | 'html' | 'css';
onChange?: (value: string) => 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(),

View File

@ -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 @@
<div class="editor-section" style="height: {editorHeight}%;">
<Editor
{value}
{language}
{onChange}
{onExecute}
{editorSettings}