[ WEBSITE | DOCS | ISSUES | FORUM | CHANGELOG ]
This package implements the language support infrastructure for the CodeMirror code editor.
The project page has more information, a number of examples and the documentation.
This code is released under an MIT license.
We aim to be an inclusive, welcoming community. To make that explicit, we have a code of conduct that applies to communication around the project.
Setting up a language from a Lezer parser looks like this:
import {parser} from "@lezer/json"
import {LRLanguage, continuedIndent, indentNodeProp,
foldNodeProp, foldInside} from "@codemirror/language"
export const jsonLanguage = LRLanguage.define({
name: "json",
parser: parser.configure({
props: [
indentNodeProp.add({
Object: continuedIndent({except: /^\s*\}/}),
Array: continuedIndent({except: /^\s*\]/})
}),
foldNodeProp.add({
"Object Array": foldInside
})
]
}),
languageData: {
closeBrackets: {brackets: ["[", "{", '"']},
indentOnInput: /^\s*[\}\]]$/
}
})
Often, you'll also use this package just to access some specific language-related features, such as accessing the editor's syntax tree...
import {syntaxTree} from "@codemirror/language"
const tree = syntaxTree(view)
... or computing the appriate indentation at a given point.
import {getIndentation} from "@codemirror/language"
console.log(getIndentation(view.state, view.state.selection.main.head))