Syntax highlighting for remark-react through CodeMirror
remark-react-codemirror
Syntax highlighting for remark-react through CodeMirror.
Usage
import remark from 'remark'
import reactRenderer from 'remark-react'
import sanitizeGhSchema from 'hast-util-sanitize/lib/github.json'
import CodeMirror from 'codemirror'
import 'codemirror/mode/meta'
import 'codemirror/addon/runmode/runmode'
import 'codemirror/mode/javascript/javascript'
import highlighter from 'remark-react-codemirror'
const schema = Object.assign({}, githubSchema, {
attributes: Object.assign({}, githubSchema.attributes, {
code: [
...(githubSchema.attributes.code || []),
'className'
]
})
})
remark().use(reactRenderer, {
sanitize: schema,
remarkReactComponents: {
code: highlighter(CodeMirror, { theme: 'solarized' })
}
}).processSync(readme).contents
Notes
- The default santization schema (GitHub's) excludes
className
, but we want thosecm-*
classes for our highlighting! Hence the custom object passed tosantization
. - You'll need stylings for the classes that CodeMirror adds. You can choose from a bunch bunch of pre-made stylesheets.