75 lines
1.6 KiB
Markdown
75 lines
1.6 KiB
Markdown
# decodal-codemirror
|
|
|
|
CodeMirror 6 language support for Decodal.
|
|
|
|
This package provides the Lezer parser metadata, highlighting tags, indentation rules, block folding, and formatter command used by the Decodal Web playground.
|
|
It does not include the Decodal runtime evaluator.
|
|
Use `decodal-wasm` when you want to evaluate Decodal in a browser.
|
|
|
|
## Install
|
|
|
|
```sh
|
|
npm install decodal-codemirror
|
|
```
|
|
|
|
JSR:
|
|
|
|
```sh
|
|
deno add jsr:@hare/decodal-codemirror
|
|
```
|
|
|
|
## Usage
|
|
|
|
```js
|
|
import { basicSetup } from 'codemirror';
|
|
import { EditorView } from '@codemirror/view';
|
|
import { decodal } from 'decodal-codemirror';
|
|
|
|
new EditorView({
|
|
doc: 'Server = { port = Int default 8080; };',
|
|
extensions: [
|
|
basicSetup,
|
|
decodal(),
|
|
],
|
|
parent: document.querySelector('#editor'),
|
|
});
|
|
```
|
|
|
|
## Exports
|
|
|
|
```js
|
|
import {
|
|
decodal,
|
|
decodalLanguage,
|
|
decodalHighlightStyle,
|
|
} from 'decodal-codemirror';
|
|
```
|
|
|
|
`decodal()` accepts a small options object:
|
|
|
|
```js
|
|
decodal({ highlight: false })
|
|
```
|
|
|
|
Use this when you want the language support without the bundled highlight style.
|
|
|
|
## Formatting
|
|
|
|
The formatter is exposed as a separate subpath so plain syntax highlighting does not force callers to initialize WebAssembly.
|
|
|
|
```js
|
|
import {
|
|
formatDecodal,
|
|
formatDecodalCommand,
|
|
initDecodalFormatter,
|
|
} from 'decodal-codemirror/format';
|
|
import formatterWasm from 'decodal-codemirror/wasm/decodal_language_tools_bg.wasm?url';
|
|
|
|
await initDecodalFormatter(formatterWasm);
|
|
|
|
const result = formatDecodal('Server={port=Int default 8080;};');
|
|
if (result.ok) console.log(result.source);
|
|
|
|
formatDecodalCommand(view);
|
|
```
|