Skip to content

wooorm/markdown-tm-language

Repository files navigation

markdown-tm-language

Build

Really good syntax highlighting for markdown and MDX.

Example of markdown highlighting (using GitHub dark mode theme)
Example of MDX highlighting (using GitHub light mode theme)

Contents

What is this?

This project includes high quality TextMate grammars for markdown and MDX.

Try it out in the playground »

When should I use this?

You can use these grammars in your code editor or with starry-night and shiki.

Install

starry-night

You can currently use the text.md.js and source.mdx.js files in this repo with starry-night. The plan is to get these grammars into GitHub, at which point they’ll be in starry-night proper.

shiki

The plan is to get these grammars into Shiki, at which point you can use them from there. Tracking issue for the MDX grammar: shikijs/shiki#447.

VS Code

For the MDX grammar, use: vscode-mdx.

Sublime and TextMate

I’m not a Sublime or TextMate user and I am not very interested in maintaining a packages for them currently. You should be able to clone this repo somewhere (~/.config/sublime-text-2/Packages?), then you should reportedly be able to use these grammars.

PR welcome to improve this section or do the work to make it happen :)

Use

After installing, type some things!

Or use the playground.

API

There is no API.

You can generate your own grammars, by modifying languages in build.js. To illustrate, you can add a new language there, or turn on or off several extensions (such as gfm) in the existing ones.

Syntax

Markdown is handled according to CommonMark and common extensions:

  • directives
  • frontmatter (YAML, TOML)
  • GFM (autolink literals, footnotes, strikethrough, tables, tasklists)
  • GitHub (gemoji, mentions, references)
  • math(†)
  • MDX (ESM, expressions, JSX)

(†) — with two or more dollars.

Compatibility

The markdown grammar supports CommonMark and common extensions: directives, frontmatter, GFM, GitHub, and math. The MDX grammar is similar, but of course uses the MDX syntax extensions, and does not include directives.

Security

Should be good!

Related

Contribute

Yes please! See How to Contribute to Open Source.

In particular, see grammar.yml, that’s likely where your changes will go, and it includes a ton of information on how it all works.

You might also want to check if the grammars here work with linguist. Perform these steps:

git clone gh:github/linguist
cd linguist
./script/bootstrap
# copy/paste this repo in `linguist`
script/grammar-compiler add markdown-tm-language

License

MIT © Titus Wormer