This repository has moved to https://code.haverbeke.berlin/codemirror/language
[ 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"exportconstjsonLanguage=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"consttree=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))