lang-markdown

Markdown language support for the CodeMirror 6 code editor

Library
npm
v6.5.2
131 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
37 /100 Needs Attention
Development Activity 4
Maintenance 0
Community 64
Maturity 60
Momentum 20

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
85 /100 Excellent
Architecture 90
Code Quality 88
Innovation 85
Learning Curve 78

@codemirror/lang-markdown is the official Markdown language package for CodeMirror 6. It wires the Lezer Markdown parser into CodeMirror’s language system, giving an editor CommonMark and GitHub Flavored Markdown parsing, syntax highlighting, section folding, and Markdown-aware editing commands.

Beyond parsing, the package layers in editor ergonomics: fenced code blocks can be highlighted with nested language parsers, HTML tags are completed as you type, pasted URLs become links over a selection, and Enter/Backspace continue or unwind list and blockquote markup. It ships as a small, tree-shakeable ES module with TypeScript types.

What You Get

  • A markdown() extension factory returning a CodeMirror LanguageSupport value
  • commonmarkLanguage and markdownLanguage (GFM plus subscript, superscript, and emoji) as ready-made Language values
  • Nested parsing of fenced code blocks via configurable code languages
  • Markdown editing commands and a keymap for continuing lists and blockquotes
  • HTML-tag autocompletion and a paste-URL-as-link extension

Common Use Cases

  • Adding a Markdown editing mode to a CodeMirror-based text or code editor
  • Building a documentation or note-taking app with live Markdown syntax highlighting
  • Highlighting fenced code blocks inside Markdown using other CodeMirror language packages
  • Providing GFM support (tables, task lists, strikethrough) in an embedded editor

Under The Hood

Architecture - The package is a thin, well-factored adapter over the Lezer Markdown parser. markdown.ts configures the base Lezer parser with CodeMirror NodeProps for folding, heading levels, indentation, and language data, then wraps it in a Language via mkLang, exporting commonmarkLanguage and an extended GFM+subscript/superscript/emoji markdownLanguage. index.ts exposes the public markdown() factory that assembles a LanguageSupport, pulling in HTML tag handling, parseCode for nested fenced-code parsing through getCodeParser, an optional keymap, HTML-tag autocompletion, and the pasteURLAsLink DOM handler; commands.ts implements the list/blockquote continuation and deletion commands.

Tech Stack - Written in TypeScript targeting an ES module (type: module, dual import/require exports) with sideEffects: false for tree-shaking. It depends on the CodeMirror 6 core (@codemirror/state, @codemirror/view, @codemirror/language, @codemirror/autocomplete), @codemirror/lang-html for embedded HTML, and @lezer/markdown/@lezer/common for parsing. Build and test tooling comes from @codemirror/buildhelper (cm-buildhelper, cm-runtests).

Code Quality - The code is idiomatic and tightly scoped across four small source files, using triple-slash doc comments on the public API that double as generated README reference docs. A test/test-commands.ts suite exercises the Markdown editing commands. Naming is consistent with the wider CodeMirror ecosystem, types are precise, and edge cases (non-plain-text nodes, tight vs. non-tight lists, code/comment regions) are handled explicitly.

API Design - The developer experience is excellent: a single markdown(config?) call returns a ready extension, and the config object is small but expressive (codeLanguages, defaultCodeLanguage, addKeymap, base, completeHTMLTags, pasteURLAsLink, htmlTagLanguage). Sensible defaults mean zero-config usage works, while advanced needs like nested language highlighting are a one-line addition. The public surface is documented inline and mirrored in the README API reference.

Used by 33 apps in this directory

Go
53%
MIT

memos

Note Taking

64,031

Open-source, self-hosted note-taking built for quick capture — Markdown-native, lightweight, and fully yours.

View details
91
Repo Health
78
Technical
65
Dependency
Built with
Go 53%
TypeScript 46%
Updated 6 days ago
TypeScript
88%
MIT

Mistle

AI Agents · Developer Tools

95

Self-hostable platform for running autonomous coding agents in isolated, credentialless sandboxes with brokered credentials, reusable snapshots, and event-driven triggers.

View details
50
Repo Health
76
Technical
70
Dependency
Built with
TypeScript 88%
Rust 11%
Updated 4 weeks ago
Go
63%
MIT

Obot

AI Agents · Mcp

1,120

An open-source MCP platform for organizations — host MCP servers, run MCP registries, monitor usage, and build agents and chatbots on top of the Model Context Protocol from one self-hosted deployment.

View details
88
Repo Health
70
Technical
70
Dependency
Built with
Go 63%
Svelte 21%
TypeScript 15%
Updated 1 weeks ago
TypeScript
99%
Apache 2.0

Onlook

AI Design Tools · Design Tools

26,996

An open-source, AI-first visual editor that lets designers and developers build, style, and deploy React apps directly in code — no handoff required.

View details
63
Repo Health
80
Technical
64
Dependency
Built with
TypeScript 99%
Updated 1 weeks ago
TypeScript
97%
GPL 3.0

OpenKnowledge

Code Editors · Knowledge Management · Note Taking

4,674

A beautiful, local-first markdown IDE that turns any git repo into a live collaborative workspace for humans and AI coding agents like Claude, Codex, and OpenCode.

View details
80
Repo Health
89
Technical
64
Dependency
Built with
TypeScript 97%
Updated 6 days ago
Python
73%
AGPL 3.0

OpenViking

AI Development · AI Memory · Databases

40,705

An open-source context database that gives AI agents a unified filesystem for memory, resources, and skills with hierarchical tiered retrieval.

View details
85
Repo Health
75
Technical
64
Dependency
Built with
Python 73%
TypeScript 12%
Rust 11%
Updated 6 days ago
TypeScript
85%
MIT

openwork

AI Assistants · Automation

24,237

OpenWork is a free, open-source desktop app for running AI agent workflows on your own files with 50+ LLMs, extensible skills, and MCP server support — the open-source alternative to Claude Cowork and Codex.

View details
87
Repo Health
89
Technical
67
Dependency
Built with
TypeScript 85%
Updated 6 days ago
JavaScript
64%
AGPL 3.0

overleaf

Collaboration · Productivity

18,266

Open-source, real-time collaborative LaTeX editor with sandboxed compilation and full TeXLive support for self-hosted academic and research teams.

View details
84
Repo Health
80
Technical
59
Dependency
Built with
JavaScript 64%
TypeScript 30%
Updated 1 months ago
Go
40%
Apache 2.0

Rill

Analytics · Data Engineering

2,962

The fastest BI tool for humans and agents — define metrics, models, and dashboards as code and query them instantly on ClickHouse or DuckDB.

View details
88
Repo Health
88
Technical
64
Dependency
Built with
Go 40%
TypeScript 38%
Svelte 21%
Updated 6 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers