Security News
JavaScript Leaders Demand Oracle Release the JavaScript Trademark
In an open letter, JavaScript community leaders urge Oracle to give up the JavaScript trademark, arguing that it has been effectively abandoned through nonuse.
@codemirror/legacy-modes
Advanced tools
Collection of ported legacy language modes for the CodeMirror code editor
@codemirror/legacy-modes is a package that provides support for legacy modes in CodeMirror 6. It allows users to utilize syntax highlighting and other features from older versions of CodeMirror in the newer version.
Syntax Highlighting
This code sample demonstrates how to use the @codemirror/legacy-modes package to add Python syntax highlighting to a CodeMirror 6 editor instance.
import { legacyMode } from '@codemirror/legacy-modes';
import { StreamLanguage } from '@codemirror/language';
import { python } from '@codemirror/legacy-modes/mode/python';
const pythonLanguage = StreamLanguage.define(python);
const editor = new EditorView({
state: EditorState.create({
doc: 'print("Hello, World!")',
extensions: [pythonLanguage]
}),
parent: document.body
});
Legacy Mode Integration
This code sample shows how to integrate JavaScript syntax highlighting from legacy CodeMirror modes into a CodeMirror 6 editor.
import { legacyMode } from '@codemirror/legacy-modes';
import { StreamLanguage } from '@codemirror/language';
import { javascript } from '@codemirror/legacy-modes/mode/javascript';
const jsLanguage = StreamLanguage.define(javascript);
const editor = new EditorView({
state: EditorState.create({
doc: 'console.log("Hello, World!");',
extensions: [jsLanguage]
}),
parent: document.body
});
The 'codemirror' package is the original CodeMirror library, which includes a wide range of language modes and features for creating code editors. It is the predecessor to CodeMirror 6 and includes built-in support for many languages, but it does not have the modular architecture of CodeMirror 6.
Prism is a lightweight, extensible syntax highlighter. It is designed to be easy to extend and customize, and it supports a wide range of languages. Unlike @codemirror/legacy-modes, Prism is not tied to a specific editor and can be used in various contexts.
Highlight.js is a syntax highlighter written in JavaScript. It works in the browser as well as on the server. It is similar to @codemirror/legacy-modes in that it provides syntax highlighting for many languages, but it is not specifically designed for integration with CodeMirror.
[ 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.
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)]
})
apl: StreamParser<unknown>
asciiArmor: StreamParser<unknown>
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>
asterisk: StreamParser<unknown>
brainfuck: StreamParser<unknown>
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>
clojure: StreamParser<unknown>
cmake: StreamParser<unknown>
cobol: StreamParser<unknown>
coffeeScript: StreamParser<unknown>
commonLisp: StreamParser<unknown>
crystal: StreamParser<unknown>
css: StreamParser<unknown>
sCSS: StreamParser<unknown>
less: StreamParser<unknown>
gss: StreamParser<unknown>
cypher: StreamParser<unknown>
d: StreamParser<unknown>
diff: StreamParser<unknown>
dockerFile: StreamParser<unknown>
dtd: StreamParser<unknown>
dylan: StreamParser<unknown>
ebnf: StreamParser<unknown>
ecl: StreamParser<unknown>
eiffel: StreamParser<unknown>
elm: StreamParser<unknown>
erlang: StreamParser<unknown>
factor: StreamParser<unknown>
fcl: StreamParser<unknown>
forth: StreamParser<unknown>
fortran: StreamParser<unknown>
gas: StreamParser<unknown>
gasArm: StreamParser<unknown>
gherkin: StreamParser<unknown>
go: StreamParser<unknown>
groovy: StreamParser<unknown>
haskell: StreamParser<unknown>
haxe: StreamParser<unknown>
hxml: StreamParser<unknown>
http: StreamParser<unknown>
idl: StreamParser<unknown>
javascript: StreamParser<unknown>
json: StreamParser<unknown>
jsonld: StreamParser<unknown>
typescript: StreamParser<unknown>
jinja2: StreamParser<unknown>
julia: StreamParser<unknown>
liveScript: StreamParser<unknown>
lua: StreamParser<unknown>
mathematica: StreamParser<unknown>
mbox: StreamParser<unknown>
mirc: StreamParser<unknown>
oCaml: StreamParser<unknown>
fSharp: StreamParser<unknown>
sml: StreamParser<unknown>
modelica: StreamParser<unknown>
mscgen: StreamParser<unknown>
msgenny: StreamParser<unknown>
xu: StreamParser<unknown>
mumps: StreamParser<unknown>
nginx: StreamParser<unknown>
nsis: StreamParser<unknown>
ntriples: StreamParser<unknown>
octave: StreamParser<unknown>
oz: StreamParser<unknown>
pascal: StreamParser<unknown>
pegjs: StreamParser<unknown>
perl: StreamParser<unknown>
pig: StreamParser<unknown>
powerShell: StreamParser<unknown>
properties: StreamParser<unknown>
protobuf: StreamParser<unknown>
pug: StreamParser<unknown>
puppet: StreamParser<unknown>
python: StreamParser<unknown>
cython: StreamParser<unknown>
q: StreamParser<unknown>
r: StreamParser<unknown>
rpmChanges: StreamParser<unknown>
rpmSpec: StreamParser<unknown>
ruby: StreamParser<unknown>
rust: StreamParser<unknown>
sas: StreamParser<unknown>
sass: StreamParser<unknown>
scheme: StreamParser<unknown>
shell: StreamParser<unknown>
sieve: StreamParser<unknown>
interface
RulesimpleMode<K extends string>(states: {[P in K]: P extends "languageData" ? Object<any> : Rule[]} & {start: Rule[]}) → StreamParser<unknown>
smalltalk: StreamParser<unknown>
solr: StreamParser<unknown>
sparql: StreamParser<unknown>
spreadsheet: StreamParser<unknown>
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>
stex: StreamParser<unknown>
stexMath: StreamParser<unknown>
stylus: StreamParser<unknown>
swift: StreamParser<unknown>
tcl: StreamParser<unknown>
textile: StreamParser<unknown>
tiddlyWiki: StreamParser<unknown>
tiki: StreamParser<unknown>
toml: StreamParser<unknown>
troff: StreamParser<unknown>
ttcnCfg: StreamParser<unknown>
ttcn: StreamParser<unknown>
turtle: StreamParser<unknown>
vb: StreamParser<unknown>
vbScript: StreamParser<unknown>
vbScriptASP: StreamParser<unknown>
velocity: StreamParser<unknown>
verilog: StreamParser<unknown>
tlv: StreamParser<unknown>
vhdl: StreamParser<unknown>
wast: StreamParser<unknown>
webIDL: StreamParser<unknown>
xml: StreamParser<unknown>
html: StreamParser<unknown>
xQuery: StreamParser<unknown>
yacas: StreamParser<unknown>
yaml: StreamParser<unknown>
z80: StreamParser<unknown>
ez80: StreamParser<unknown>
6.4.1 (2024-08-15)
Stop treating closing brackets as brackets in the Common Lisp mode.
Fix a bug where the Stylus mode would crash when queried for indentation.
FAQs
Collection of ported legacy language modes for the CodeMirror code editor
The npm package @codemirror/legacy-modes receives a total of 301,595 weekly downloads. As such, @codemirror/legacy-modes popularity was classified as popular.
We found that @codemirror/legacy-modes demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
In an open letter, JavaScript community leaders urge Oracle to give up the JavaScript trademark, arguing that it has been effectively abandoned through nonuse.
Security News
The initial version of the Socket Python SDK is now on PyPI, enabling developers to more easily interact with the Socket REST API in Python projects.
Security News
Floating dependency ranges in npm can introduce instability and security risks into your project by allowing unverified or incompatible versions to be installed automatically, leading to unpredictable behavior and potential conflicts.