Package detail

@codemirror/legacy-modes

codemirror1.9mMIT6.5.1

Collection of ported legacy language modes for the CodeMirror code editor

editor, code

readme

@codemirror/legacy-modes NPM version

[ WEBSITE | ISSUES | FORUM | CHANGELOG ]

This package implements a collection of ported stream language modes for the CodeMirror code editor. Each mode is available as a separate script file, under "@codemirror/legacy-modes/mode/[name]", and exports the values listed below.

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.

Usage

Using modes from this package works like this:

  • Install this package and the @codemirror/language package.

  • Find the StreamParser instance you need in the reference below.

  • Add StreamLanguage.define(theParser) to your editor's configuration.

For example, to load the Lua mode, you'd do something like...

import {StreamLanguage} from "@codemirror/language"
import {lua} from "@codemirror/legacy-modes/mode/lua"

import {EditorView, basicSetup} from "codemirror"

let view = new EditorView({
  extensions: [basicSetup, StreamLanguage.define(lua)]
})

API Reference

mode/apl

apl: StreamParser<unknown>

mode/asciiarmor

asciiArmor: StreamParser<unknown>

mode/asn1

asn1(conf: {keywords⁠?: Object<any>, cmipVerbs⁠?: Object<any>, compareTypes⁠?: Object<any>, status⁠?: Object<any>, tags⁠?: Object<any>, storage⁠?: Object<any>, modifier⁠?: Object<any>, accessTypes⁠?: Object<any>, multiLineStrings⁠?: boolean}) → StreamParser<unknown>

mode/asterisk

asterisk: StreamParser<unknown>

mode/brainfuck

brainfuck: StreamParser<unknown>

mode/clike

clike(conf: {name: string, statementIndentUnit⁠?: number, dontAlignCalls⁠?: boolean, keywords⁠?: Object<any>, types⁠?: Object<any>, builtin⁠?: Object<any>, blockKeywords⁠?: Object<any>, atoms⁠?: Object<any>, hooks⁠?: Object<any>, multiLineStrings⁠?: boolean, indentStatements⁠?: boolean, indentSwitch⁠?: boolean, namespaceSeparator⁠?: string, isPunctuationChar⁠?: RegExp, numberStart⁠?: RegExp, number⁠?: RegExp, isOperatorChar⁠?: RegExp, isIdentifierChar⁠?: RegExp, isReservedIdentifier⁠?: fn(id: string) → boolean}) → StreamParser<unknown>
c: StreamParser<unknown>
cpp: StreamParser<unknown>
java: StreamParser<unknown>
csharp: StreamParser<unknown>
scala: StreamParser<unknown>
kotlin: StreamParser<unknown>
shader: StreamParser<unknown>
nesC: StreamParser<unknown>
objectiveC: StreamParser<unknown>
objectiveCpp: StreamParser<unknown>
squirrel: StreamParser<unknown>
ceylon: StreamParser<unknown>
dart: StreamParser<unknown>

mode/clojure

clojure: StreamParser<unknown>

mode/cmake

cmake: StreamParser<unknown>

mode/cobol

cobol: StreamParser<unknown>

mode/coffeescript

coffeeScript: StreamParser<unknown>

mode/commonlisp

commonLisp: StreamParser<unknown>

mode/crystal

crystal: StreamParser<unknown>

mode/css

css: StreamParser<unknown>
sCSS: StreamParser<unknown>
less: StreamParser<unknown>
gss: StreamParser<unknown>

mode/cypher

cypher: StreamParser<unknown>

mode/d

d: StreamParser<unknown>

mode/diff

diff: StreamParser<unknown>

mode/dockerfile

dockerFile: StreamParser<unknown>

mode/dtd

dtd: StreamParser<unknown>

mode/dylan

dylan: StreamParser<unknown>

mode/ebnf

ebnf: StreamParser<unknown>

mode/ecl

ecl: StreamParser<unknown>

mode/eiffel

eiffel: StreamParser<unknown>

mode/elm

elm: StreamParser<unknown>

mode/erlang

erlang: StreamParser<unknown>

mode/factor

factor: StreamParser<unknown>

mode/fcl

fcl: StreamParser<unknown>

mode/forth

forth: StreamParser<unknown>

mode/fortran

fortran: StreamParser<unknown>

mode/gas

gas: StreamParser<unknown>
gasArm: StreamParser<unknown>

mode/gherkin

gherkin: StreamParser<unknown>

mode/go

go: StreamParser<unknown>

mode/groovy

groovy: StreamParser<unknown>

mode/haskell

haskell: StreamParser<unknown>

mode/haxe

haxe: StreamParser<unknown>
hxml: StreamParser<unknown>

mode/http

http: StreamParser<unknown>

mode/idl

idl: StreamParser<unknown>

mode/javascript

javascript: StreamParser<unknown>
json: StreamParser<unknown>
jsonld: StreamParser<unknown>
typescript: StreamParser<unknown>

mode/jinja2

jinja2: StreamParser<unknown>

mode/julia

julia: StreamParser<unknown>

mode/livescript

liveScript: StreamParser<unknown>

mode/lua

lua: StreamParser<unknown>

mode/mathematica

mathematica: StreamParser<unknown>

mode/mbox

mbox: StreamParser<unknown>

mode/mirc

mirc: StreamParser<unknown>

mode/mllike

oCaml: StreamParser<unknown>
fSharp: StreamParser<unknown>
sml: StreamParser<unknown>

mode/modelica

modelica: StreamParser<unknown>

mode/mscgen

mscgen: StreamParser<unknown>
msgenny: StreamParser<unknown>
xu: StreamParser<unknown>

mode/mumps

mumps: StreamParser<unknown>

mode/nginx

nginx: StreamParser<unknown>

mode/nsis

nsis: StreamParser<unknown>

mode/ntriples

ntriples: StreamParser<unknown>

mode/octave

octave: StreamParser<unknown>

mode/oz

oz: StreamParser<unknown>

mode/pascal

pascal: StreamParser<unknown>

mode/pegjs

pegjs: StreamParser<unknown>

mode/perl

perl: StreamParser<unknown>

mode/pig

pig: StreamParser<unknown>

mode/powershell

powerShell: StreamParser<unknown>

mode/properties

properties: StreamParser<unknown>

mode/protobuf

protobuf: StreamParser<unknown>

mode/pug

pug: StreamParser<unknown>

mode/puppet

puppet: StreamParser<unknown>

mode/python

python: StreamParser<unknown>
cython: StreamParser<unknown>

mode/q

q: StreamParser<unknown>

mode/r

r: StreamParser<unknown>

mode/rpm

rpmChanges: StreamParser<unknown>
rpmSpec: StreamParser<unknown>

mode/ruby

ruby: StreamParser<unknown>

mode/rust

rust: StreamParser<unknown>

mode/sas

sas: StreamParser<unknown>

mode/sass

sass: StreamParser<unknown>

mode/scheme

scheme: StreamParser<unknown>

mode/shell

shell: StreamParser<unknown>

mode/sieve

sieve: StreamParser<unknown>

mode/simple-mode

interface Rule

regex⁠?: string | RegExp | undefined
token⁠?: string | string[] | fn(matches: RegExpMatchArray) → string | string[] | null | null | undefined
sol⁠?: boolean
next⁠?: string
push⁠?: string
pop⁠?: boolean
indent⁠?: boolean
dedent⁠?: boolean
dedentIfLineStart⁠?: boolean

simpleMode<K extends string>(states: {[P in K]: P extends "languageData" ? Object<any> : Rule[]} & {start: Rule[]}) → StreamParser<unknown>

mode/smalltalk

smalltalk: StreamParser<unknown>

mode/solr

solr: StreamParser<unknown>

mode/sparql

sparql: StreamParser<unknown>

mode/spreadsheet

spreadsheet: StreamParser<unknown>

mode/sql

sql(conf: {client⁠?: Object<any>, atoms⁠?: Object<any>, builtin⁠?: Object<any>, keywords⁠?: Object<any>, operatorChars⁠?: RegExp, support⁠?: Object<any>, hooks⁠?: Object<any>, dateSQL⁠?: Object<any>, backslashStringEscapes⁠?: boolean, brackets⁠?: RegExp, punctuation⁠?: RegExp}) → StreamParser<unknown>
standardSQL: StreamParser<unknown>
msSQL: StreamParser<unknown>
mySQL: StreamParser<unknown>
mariaDB: StreamParser<unknown>
sqlite: StreamParser<unknown>
cassandra: StreamParser<unknown>
plSQL: StreamParser<unknown>
hive: StreamParser<unknown>
pgSQL: StreamParser<unknown>
gql: StreamParser<unknown>
gpSQL: StreamParser<unknown>
sparkSQL: StreamParser<unknown>
esper: StreamParser<unknown>

mode/stex

stex: StreamParser<unknown>
stexMath: StreamParser<unknown>

mode/stylus

stylus: StreamParser<unknown>

mode/swift

swift: StreamParser<unknown>

mode/tcl

tcl: StreamParser<unknown>

mode/textile

textile: StreamParser<unknown>

mode/tiddlywiki

tiddlyWiki: StreamParser<unknown>

mode/tiki

tiki: StreamParser<unknown>

mode/toml

toml: StreamParser<unknown>

mode/troff

troff: StreamParser<unknown>

mode/ttcn-cfg

ttcnCfg: StreamParser<unknown>

mode/ttcn

ttcn: StreamParser<unknown>

mode/turtle

turtle: StreamParser<unknown>

mode/vb

vb: StreamParser<unknown>

mode/vbscript

vbScript: StreamParser<unknown>
vbScriptASP: StreamParser<unknown>

mode/velocity

velocity: StreamParser<unknown>

mode/verilog

verilog: StreamParser<unknown>
tlv: StreamParser<unknown>

mode/vhdl

vhdl: StreamParser<unknown>

mode/wast

wast: StreamParser<unknown>

mode/webidl

webIDL: StreamParser<unknown>

mode/xml

xml: StreamParser<unknown>
html: StreamParser<unknown>

mode/xquery

xQuery: StreamParser<unknown>

mode/yacas

yacas: StreamParser<unknown>

mode/yaml

yaml: StreamParser<unknown>

mode/z80

z80: StreamParser<unknown>
ez80: StreamParser<unknown>

changelog

6.5.1 (2025-04-22)

Bug fixes

Fix a crash in the Stylus mode's indentation logic.

6.5.0 (2025-03-13)

New features

Simple modes can now include a mergeTokens option in their language data to disable token merging.

6.4.3 (2025-02-12)

Bug fixes

Make Pascal keyword matching case-insensitive.

Fix a crash in simple-mode.js when using the dontIndentStates feature.

Fix a bug in tokenizing multiline strings in xQuery.

6.4.2 (2024-11-05)

Bug fixes

Fix an issue in the Groovy mode where interpolated variable style would continue after whitespace.

Add support for underscore separators in numbers in the Dart mode.

6.4.1 (2024-08-15)

Bug fixes

Stop treating closing brackets as brackets in the Common Lisp mode.

Fix a bug where the Stylus mode would crash when queried for indentation.

6.4.0 (2024-04-05)

Bug fixes

Only match Solr operator words when they are upper-case.

Fix an infinite loop when tokenizing heredoc strings in the Crystal mode.

New features

Add the old Pug mode.

6.3.3 (2023-07-20)

Bug fixes

In Shell mode, don't allow spaces in heredoc tokens.

6.3.2 (2023-03-20)

Bug fixes

Fix tokenizing of character literals in the Scala mode.

6.3.1 (2022-11-24)

Bug fixes

In JavaScript, properly parse keywords like static when in front of a private property.

6.3.0 (2022-11-18)

New features

Add the old PegJS mode.

6.2.0 (2022-10-24)

Bug fixes

Include type declarations for mode/simple-mode.js.

New features

Include a name for each mode in the stream parser objects.

6.1.0 (2022-06-17)

Bug fixes

Add structured concurrency keywords to the Swift mode. Update readme to follow interface changes

New features

Adds the Sass mode from CodeMirror 5.

6.0.0 (2022-06-08)

Bug fixes

Add line comment syntax metadata to the Toml mode.

0.20.0 (2022-04-20)

Breaking changes

Update dependencies to 0.20.0

0.19.1 (2022-03-03)

Bug fixes

Fix an issue causing the Lua mode to indent everything one unit too far.

Fix a bug in the Swift mode when indenting an empty block after exploding with insertNewlineAndIndent.

0.19.0 (2021-08-11)

Breaking changes

Update dependencies to 0.19.0

0.18.1 (2021-06-24)

Bug fixes

Fix internal imports to include the extension in the path.

0.18.0 (2021-03-03)

Breaking changes

Update dependencies to 0.18.

0.17.1 (2021-01-06)

New features

The package now also exports CommonJS modules.

The package now also exports a CommonJS module.

0.17.0 (2020-12-29)

Breaking changes

First numbered release.