How to highlight the editor in markdown mode?

In markdown mode, I want to implement syntax highlighting, such as code block, title, list, etc. But I didn’t find the relevant documents

did you happen to figure this out?

You need to use the markdown language extension, and you need to supply a list of compatible code languages. Here’s an example of my implementation. Happy to answer any questions you have.

@marijn do you know how to get this working? I tried:


const MARKDOWN_LANGUAGES = [
  () => wastLanguage,
  () => StreamLanguage.define(yaml),
  () => cssLanguage,
  () => jsxLanguage,
  () => tsxLanguage,
  () => cppLanguage,
  () => htmlLanguage,
  () => javaLanguage,
  () => markdownLanguage,
  () => phpLanguage,
  () => pythonLanguage,
  () => rustLanguage,
  () => StandardSQL.language,
  () => xmlLanguage,
  () => lessLanguage,
  () => sassLanguage,
  () => clojureLanguage,
  () => csharpLanguage,
  () => jsonLanguage,
  () => brainfuckLanguage,
  () => StreamLanguage.define(stex),
  () => StreamLanguage.define(lua),
  () => StreamLanguage.define(ruby),
  () => StreamLanguage.define(cmake),
  () => StreamLanguage.define(cobol),
  () => StreamLanguage.define(coffeeScript),
  () => StreamLanguage.define(commonLisp),
  () => StreamLanguage.define(crystal),
  () => StreamLanguage.define(dockerFile),
  () => StreamLanguage.define(elm),
  () => StreamLanguage.define(erlang),
  () => StreamLanguage.define(fortran),
  () => StreamLanguage.define(gherkin),
  () => StreamLanguage.define(go),
  () => StreamLanguage.define(haskell),
  () => StreamLanguage.define(haxe),
  () => StreamLanguage.define(http),
  () => StreamLanguage.define(julia),
  () => StreamLanguage.define(mathematica),
  () => StreamLanguage.define(nginx),
  () => StreamLanguage.define(pascal),
  () => StreamLanguage.define(pegjs),
  () => StreamLanguage.define(perl),
  () => StreamLanguage.define(pig),
  () => StreamLanguage.define(powerShell),
  () => StreamLanguage.define(protobuf),
  () => StreamLanguage.define(puppet),
  () => StreamLanguage.define(r),
  () => StreamLanguage.define(scheme),
  () => StreamLanguage.define(shell),
  () => StreamLanguage.define(smalltalk),
  () => StreamLanguage.define(sparql),
  () => StreamLanguage.define(swift),
  () => StreamLanguage.define(textile),
  () => StreamLanguage.define(toml),
  () => StreamLanguage.define(vb),
  () => StreamLanguage.define(vbScript),
  () => StreamLanguage.define(verilog),
]

Using with:

import { markdown, markdownLanguage } from '@codemirror/lang-markdown'

markdown({
    base: markdownLanguage,
    codeLanguages: MARKDOWN_LANGUAGES,
  })

But it says:

Type '((() => LRLanguage) | (() => Language))[]' is not assignable to type 'readonly LanguageDescription[] | ((info: string) => Language | LanguageDescription | null) | undefined'.
  Type '((() => LRLanguage) | (() => Language))[]' is not assignable to type 'readonly LanguageDescription[]'.
    Type '(() => LRLanguage) | (() => Language)' is not assignable to type 'LanguageDescription'.
      Type '() => LRLanguage' is not assignable to type 'LanguageDescription'.ts(2322)

So how do I get this working with all languages highlighted in code blocks?

Ideally we could do GFM github flavored markdown.