File: markdown-ts-mode.el.html

This is an experimental mode that has a number of unresolved issues.

;; Tree-sitter Language Versions

markdown-ts-mode has been tested with the following grammars and version:
- tree-sitter-markdown: v0.4.1
- tree-sitter-markdown-inline: v0.4.1

We try our best to make built-in modes work with latest grammar versions, so a more recent grammar has a good chance to work. Send us a bug report if it doesn't.

Bidirectional Text Considerations

Text with markup may need an extra newline before bidirectional text for it to show correctly. This is a limitation in the Emacs display engine.

Code Block Language Mode Considerations

Fenced code block language modes are derived from the table markdown-ts-code-block-modes and heuristics adding "-ts-mode" and
"-mode" to the language name. If your language's mode is not
properly recognized, add it to markdown-ts-code-block-modes, which see.

Each language's major mode is enabled once per markdown-ts-mode buffer in a temporary buffer to extract its default font-lock and tree-sitter settings. In conventional non-treesit code blocks, the major mode is enabled each time the block is fontified.

NOTE: Major mode hooks are not run and font-lock, treesit, indent, comment recognition, etc. customizations that you might have in your hooks are not applied. As a result, your code blocks might appear different in markdown-ts-mode mode than in native major mode buffers. Not running hooks avoids the cost of each mode hook and avoids potential recursive treesit callback issues.

;; Code Block Commands

Some common commands will operate within a code block and in its mode. These operate in an indirect buffer and some commands may operate slightly differently to the same commands invoked in a native mode buffer. indent-for-tab-command may invoke completion-at-point under the covers and may return results from the surrounding Markdown buffer instead of the code block's context. You can invoke completion-at-point directly by using its key binding, `C-M-i`.

;; Pipe Tables

These are a GitHub Flavored Markdown (GFM) extension and are a de facto standard given their popularity and implementations across products. They might as well be folded into the CommonMark standard.

A pipe table is a rectangle of text surrounded to the east and west by pipe symbols and where pipes separate columns. It has a header row immediately followed by header alignment row, both of which must contain the same number of cells. Body rows are optional. A table ends with a blank line or at the start of a new Markdown block element.

The header alignment row column must have a minimum of three hyphens which indicates default alignment (i.e., whatever a renderer chooses). To indicate left alignment, prefix the hyphen string with a colon like this :---. For center alignment, prefix and suffix with colons like this :---:. For right alignment, suffix with a colon like this ---:.

Each table header or body cell can contain the usual Markdown inline style indicators. A cell cannot contain a block element such as a headings, thematic breaks, block quotes, fenced code blocks.

Table cells do not need to align visually; i.e., the pipe symbols do not need to line up vertically. The tree-sitter parser and renderers detect cell boundaries using pipe symbols, not their relative alignment.

If you want to include what looks like code, you can use backticks to wrap such text ala `this is code. This mode will not fontify such code.

If you want to include a pipe symbol in a cell, escape it thusly \|.

Technically, body rows do not need to contain the same number of cells as the header has columns and rows do not need to share the same number of cells among themselves. Note: Many renderers get confused if the table is "ragged" with an uneven number of columns among rows. Some renderers will insert empty cells on a row that contains fewer cells than the header has columns. Some elide cells that exceed the number of columns in the header.


;; Pipe Table Recommendations


- Always use pipe symbols at the start and end of each table line.
- Use a uniform number of columns spanning the table.
- If you detect a parsing error which presents as different
  fontification and which is often caused by an empty first cell on the
  final row, try putting some characters in that cell.
- Renderers often exclude certain empty cells such as an "empty" final
  cell in a table. Follow the next item to avoid this.
- If you need that cell to appear blank and are converting to HTML,
  try using a non-printing HTML entity, such as a non-breaking space
  " ", which parse as concrete characters yet render as blank.
- HTML comments <!-- --> can also be used as a non-blank character
  string that does not get rendered. These are considered cell text
  and when placed at the end of a row, that rows number of columns is
  increased and might exceed the number of header columns.
- There are tree-sitter parser quirks. Commands such as
  markdown-ts-table-delete-column and markdown-ts-table-move-column
  follow the parser tree and can lead to unexpected results so follow
  these recommendations and table operations should be as expected.

;; Tree Sitter Bugs

markdown-ts-mode relies on the underlying tree-sitter library in Emacs (chosen at its build time), and language grammars you have installed. There are known and reported bugs which negatively affect certain features. This mode should benefit as these bugs are fixed or worked around.

- The Markdown grammar inserts block_continuation nodes as children
  of code_fence_content, which confuses both the inspector and the
  embedded parser. This affects code blocks inside block quotes.

- HTML block type 4 (<! followed by an uppercase letter, e.g.,
  <!DOCTYPE html>) causes the parser to consume all subsequent
  content. Lowercase <!doctype html> works as a workaround.
  See <https://github.com/tree-sitter-grammars/tree-sitter-markdown/issues/233>.

- The grammar parses solo tildes, incorrectly applying strikethrough.
  For example, writing:

    I see ~approximately four lights.
    I do not see ~approximately five lights.

  Results in strikethrough incorrectly starting at the first
  ~approximately and extending till the tilde at the second
  ~approximately.
  See <https://github.com/tree-sitter-grammars/tree-sitter-markdown/issues/236>.

- Superscript (^text^) and subscript (~text~) syntax is not
  supported by the grammar. No EXTENSION_ build flag exists for
  this. This is Pandoc / PHP Markdown Extra syntax, not CommonMark
  or GFM.

- Ordered (numbered) lists do not nest by indentation. Indenting
  a 1. item under another ordered item does not produce a nested
  list node; the parser either treats it as a flat sibling or
  absorbs it into the parent item's paragraph as a
  block_continuation. Unordered (-, *, +) lists nest
  correctly. Demote/promote of ordered list items is therefore
  disabled.

- Renumbering ordered lists (markdown-ts-renumber-list) may only
  affect items from point downward if the parser splits a single
  list into separate list nodes, or may continue numbering across
  two separate lists if the parser merges them into one node.

- Empty lines following an indented_code_block may be claimed by
  the parser as continuation lines of that block, rather than being
  treated as blank separators.

- Pipe tables are inconsistently parsed. Whitespace is correctly
  trimmed at the start of a cell content but trailing whitespace is
  incorrectly included. Empty cells can contain uneven "ragged" row
  column configurations that can confuse the parser.

  Markdown pipe tables with parsing issues:

  |Column 1|Column 2|Column 3|
  |--------|--------|--------|
  | | | |
  | | | | <-- parse error

  |Column 1|Column 2|Column 3|
  |--------|--------|--------|
  | | | |
  | xxx | | | <-- parsed correctly

  |Column 1|Column 2| <-- 2 columns correct
  |--------|--------| <-- 2 columns correct
           | | <-- 1 column incorrect
           | | <-- parse error
  | | | <-- not a row after the error, above

  See <https://github.com/tree-sitter-grammars/tree-sitter-markdown/issues/241>
      <https://github.com/tree-sitter-grammars/tree-sitter-markdown/issues/242>

- The grammar's external scanner has a buffer overflow in its
  serialize function: when the parser state exceeds the
  serialization buffer provided by tree-sitter, memcpy writes past
  the end and can corrupt the stack. Triggered in practice while
  parsing Markdown in Emacs.
  See <https://github.com/tree-sitter-grammars/tree-sitter-markdown/issues/243>.

;; Batch Fontification

Some downstream packages fontify multiple unrelated Markdown fragments by joining them in a single buffer with a separator and running markdown-ts-mode over the whole thing. Choice of separator matters: the tree-sitter-markdown grammar does not list the NUL byte
(\0) as extra/whitespace, so a NUL separator yields an ERROR node
and the parser enters error recovery, which can leak inline faces
(e.g., strikethrough) across fragment boundaries. Regex-based modes
tolerate NUL silently because they do not parse structure; this is a behavioral difference, not a regression.

A form feed (^L, \f) flanked by blank lines works as a clean drop-in separator: the parser treats it as a paragraph break and inline state does not bleed across fragments.

Defined variables (65)

markdown-ts--bare-email-uri-regexpRegexp matching bare email addresses not wrapped in angle brackets.
markdown-ts--bare-url-regexpRegexp matching bare URLs not wrapped in angle brackets or link syntax.
markdown-ts--code-block-languagesAlist mapping language node names to ts language.
markdown-ts--code-block-non-ts-modesAlist mapping languages to non-tree-sitter modes for code blocks.
markdown-ts--explicit-id-reMatch a Pandoc-style trailing ‘{#id}’ on a heading line.
markdown-ts--fill-unfillable-block-queryTree-sitter query matching blocks where filling is inhibited.
markdown-ts--heading-id-cacheCached hash table mapping heading slug strings to buffer positions.
markdown-ts--heading-id-cache-tickValue of ‘buffer-chars-modified-tick’ when the heading-id cache was built.
markdown-ts--link-ref-cacheCached alist of (LABEL . URL) from link reference definitions.
markdown-ts--link-ref-cache-tickValue of ‘buffer-chars-modified-tick’ when the cache was built.
markdown-ts--non-ts-fontify-cacheCache for non-tree-sitter code block fontification.
markdown-ts--non-ts-fontify-cache-tickFor blunt ‘buffer-chars-modified-tick’ cache invalidation.
markdown-ts--parser-heading-max-levelMaximum ATX heading level in Markdown (h1-h6).
markdown-ts--set-up-inlineLet bind this to non-nil for inline ‘markdown-ts-mode’ buffers.
markdown-ts--slug-github-strip-rePunctuation stripped by GitHub’s gh-slugger before hyphenation.
markdown-ts-checked-checkboxIf markup is hidden, display this for a checked task list marker.
markdown-ts-code-block-commandsCommands to execute in a code-block context.
markdown-ts-code-block-context-modeNon-nil if Markdown-Ts-Code-Block-Context mode is enabled.
markdown-ts-code-block-context-mode-hookHook run after entering or leaving ‘markdown-ts-code-block-context-mode’.
markdown-ts-code-block-force-conventional-modesTreat these code block tree-sitter modes as conventional.
markdown-ts-code-block-ignore-output-commandsCommands whose output to ignore when executed in a code-block context.
markdown-ts-code-block-in-context-modeNon-nil if Markdown-Ts-Code-Block-In-Context mode is enabled.
markdown-ts-code-block-in-context-mode-hookHook run after entering or leaving ‘markdown-ts-code-block-in-context-mode’.
markdown-ts-code-block-in-context-mode-lighterMinor mode ‘markdown-ts-code-block-context-mode’ lighter string.
markdown-ts-code-block-in-context-mode-mapKeymap for ‘markdown-ts-code-block-in-context-mode’.
markdown-ts-code-block-modesExtra mappings from code block language tags to major modes.
markdown-ts-code-block-region-commandsCommands that need a region in a code-block context.
markdown-ts-code-block-thing-commandsCommands that need a "thing" at point in a code-block context.
markdown-ts-default-code-block-modeDefault mode for anonymous code blocks.
markdown-ts-default-foldingDefault heading folding level.
markdown-ts-display-remote-inline-imagesHow to display remote inline images.
markdown-ts-ellipsisThe ellipsis to use in folded headings.
markdown-ts-emphasis-alistAlist of emphasis markers for ‘markdown-ts-emphasize’.
markdown-ts-enable-code-block-context-modeNon-nil automatically enables ‘markdown-ts-code-block-context-mode’.
markdown-ts-enable-table-modeNon-nil automatically enables ‘markdown-ts-table-mode’.
markdown-ts-fontify-code-blocks-nativelyNon-nil means fontify code block contents using the language’s mode.
markdown-ts-hard-line-break-backslashIf markup is hidden, display this character for a backslash hard line break.
markdown-ts-hard-line-break-spaceIf markup is hidden, display this for a trailing-spaces hard line break.
markdown-ts-hide-markupNon-nil means hide Markdown markup delimiters in this buffer.
markdown-ts-image-max-widthMaximum width of inline images in pixels.
markdown-ts-in-table-modeNon-nil if Markdown-Ts-In-Table mode is enabled.
markdown-ts-in-table-mode-hookHook run after entering or leaving ‘markdown-ts-in-table-mode’.
markdown-ts-in-table-mode-lighterMinor mode ‘markdown-ts-in-table-mode’ lighter string.
markdown-ts-in-table-mode-mapKeymap for ‘markdown-ts-in-table-mode’.
markdown-ts-inhibit-code-block-mode-warningsIf non-nil, inhibit code-block major-mode messages and warnings.
markdown-ts-inline-imagesNon-nil means display inline images below image links.
markdown-ts-menu-bar-showNon-nil means show the Markdown menu in the menu bar.
markdown-ts-mode-abbrev-tableAbbrev table for ‘markdown-ts-mode’.
markdown-ts-mode-hookHook run after entering ‘markdown-ts-mode’.
markdown-ts-mode-mapKeymap for ‘markdown-ts-mode’.
markdown-ts-mode-menu‘markdown-ts-mode’ menu.
markdown-ts-mode-syntax-tableSyntax table for ‘markdown-ts-mode’.
markdown-ts-table-align-featuresUse these optional features when aligning a table.
markdown-ts-table-auto-alignAutomatically align the table at point during these operations.
markdown-ts-table-default-column-widthColumn width for new columns.
markdown-ts-table-modeNon-nil if Markdown-Ts-Table mode is enabled.
markdown-ts-table-mode-hookHook run after entering or leaving ‘markdown-ts-table-mode’.
markdown-ts-thematic-break-characterIf markup is hidden, display this character for thematic breaks.
markdown-ts-unchecked-checkboxIf markup is hidden, display this for an unchecked task list marker.
markdown-ts-unordered-list-markerIf markup is hidden, display these for an unordered list marker.
markdown-ts-view-mode-abbrev-tableAbbrev table for ‘markdown-ts-view-mode’.
markdown-ts-view-mode-hookHook run after entering ‘markdown-ts-view-mode’.
markdown-ts-view-mode-mapKeymap for ‘markdown-ts-view-mode’.
markdown-ts-view-mode-pre-init-hookHooks run before ‘markdown-ts-view-mode‘ initialization.
markdown-ts-view-mode-syntax-tableSyntax table for ‘markdown-ts-view-mode’.

Defined functions (177)

markdown-ts--adaptive-fill()
markdown-ts--apply-ellipsis()
markdown-ts--barf-if-not-mode(&optional CONTEXT)
markdown-ts--block-quote-prefix()
markdown-ts--build-heading-ids()
markdown-ts--code-block-fill-paragraph(&optional JUSTIFY)
markdown-ts--code-block-in-context-mode-update-ov()
markdown-ts--code-block-language-mode(LANG)
markdown-ts--code-block-newline(&optional ARG INTERACTIVE)
markdown-ts--code-block-ts-language(NODE)
markdown-ts--code-block-xref-find-definitions(&rest ARGS)
markdown-ts--configure-current-buffer(CONFIGURATION)
markdown-ts--decode-entity(TEXT)
markdown-ts--emphasis-node-at-point()
markdown-ts--enable-code-block-in-context-mode()
markdown-ts--enable-in-table-mode()
markdown-ts--fill-block-quote(JUSTIFY)
markdown-ts--fill-forward-paragraph(ARG)
markdown-ts--fill-html-comment(NODE JUSTIFY)
markdown-ts--fill-list-item(ITEM JUSTIFY)
markdown-ts--fill-paragraph(&optional JUSTIFY)
markdown-ts--find-code-block-delimiter(POS &optional BACKWARD)
markdown-ts--find-next-code-block-delimiter(&optional POS BACKWARD REMAIN)
markdown-ts--follow-fragment(ID)
markdown-ts--fontify-atx-delimiter(NODE OVERRIDE START END &rest _)
markdown-ts--fontify-atx-heading(NODE OVERRIDE START END &rest _)
markdown-ts--fontify-autolink(NODE OVERRIDE START END &rest _)
markdown-ts--fontify-backslash-escape(NODE OVERRIDE START END &rest _)
markdown-ts--fontify-bare-uri(START END)
markdown-ts--fontify-checkbox(NODE OVERRIDE START END &rest _)
markdown-ts--fontify-code-block(NODE OVERRIDE START END &rest _)
markdown-ts--fontify-delimiter(NODE OVERRIDE START END &rest _)
markdown-ts--fontify-entity(NODE OVERRIDE START END &rest _)
markdown-ts--fontify-hard-line-break(NODE OVERRIDE START END &rest _)
markdown-ts--fontify-image(NODE OVERRIDE START END &rest _)
markdown-ts--fontify-latex-block(NODE OVERRIDE START END &rest _)
markdown-ts--fontify-link-destination(NODE OVERRIDE START END &rest _)
markdown-ts--fontify-link-node(NODE OVERRIDE START END &rest _)
markdown-ts--fontify-link-ref-destination(NODE OVERRIDE START END &rest _)
markdown-ts--fontify-link-ref-label(NODE OVERRIDE START END &rest _)
markdown-ts--fontify-non-ts-code-block(NODE OVERRIDE START END &rest _)
markdown-ts--fontify-non-ts-collect-faces(MODE BEG END)
markdown-ts--fontify-setext-heading(NODE OVERRIDE START END &rest _)
markdown-ts--fontify-thematic-break(NODE OVERRIDE START END &rest _)
markdown-ts--fontify-unordered-list-marker(NODE OVERRIDE START END &rest _)
markdown-ts--harvest-mode-treesit-configuration(MODE)
markdown-ts--heading-at-point()
markdown-ts--heading-ids()
markdown-ts--heading-level(HEADING)
markdown-ts--heading-text-and-id(RAW)
markdown-ts--host-ranges-notifier(RANGES PARSER)
markdown-ts--image-alone-on-line-p(NODE)
markdown-ts--imenu-code-block-name-function(NODE)
markdown-ts--imenu-code-block-node-p(NODE)
markdown-ts--imenu-heading-name-function(NODE)
markdown-ts--imenu-heading-node-p(NODE)
markdown-ts--in-table-mode-get-ov(POS)
markdown-ts--in-table-mode-update-ov()
markdown-ts--inhibit-messages-and-warnings(VAR &rest BODY)
markdown-ts--insert-block-quote()
markdown-ts--insert-code-block(CHAR &optional LANGUAGE)
markdown-ts--insert-divider()
markdown-ts--language-at-node(NODE)
markdown-ts--latex-block-valid-p(NODE)
markdown-ts--line-block-quote-depth(&optional POS)
markdown-ts--link-ref-definitions()
markdown-ts--list-item-at-point()
markdown-ts--list-item-depth(NODE)
markdown-ts--list-item-new-marker(ITEM)
markdown-ts--list-item-region(ITEM)
markdown-ts--list-item-text-column(ITEM)
markdown-ts--list-marker-width(ITEM)
markdown-ts--list-move(UP)
markdown-ts--list-node-bol(NODE)
markdown-ts--list-ordered-item-p(ITEM)
markdown-ts--list-promote-or-demote(DEMOTE)
markdown-ts--make-link-button(BEG END URL)
markdown-ts--maybe-run-command-in-code-block()
markdown-ts--move-subtree-up-or-down(UP)
markdown-ts--new-marker-for-line(ITEM)
markdown-ts--outline-invisible-p(POS)
markdown-ts--outline-predicate(NODE)
markdown-ts--outline-view-change()
markdown-ts--promote-or-demote(DELTA)
markdown-ts--promote-or-demote-region(DELTA)
markdown-ts--range-settings()
markdown-ts--remove-image-overlays()
markdown-ts--resolve-display-value(VAL)
markdown-ts--resolve-link-ref(LABEL)
markdown-ts--run-command-in-code-block(BLOCK-MODE COMMAND &rest ARGS)
markdown-ts--section-at-point()
markdown-ts--section-folded-p(SECTION)
markdown-ts--set-hide-markup(VALUE)
markdown-ts--set-inline-images(VALUE)
markdown-ts--set-up()
markdown-ts--slug-github(TEXT)
markdown-ts--slug-pandoc(TEXT)
markdown-ts--table-abutting-pos(POS)
markdown-ts--table-align-cell(TEXT WIDTH ALIGN)
markdown-ts--table-aligners(TABLE)
markdown-ts--table-body-row-near-pos(&optional POS ABUTTING)
markdown-ts--table-compute-node-column(ROW NODE)
markdown-ts--table-make-aligner(WIDTH ALIGN)
markdown-ts--table-node-cell(&optional NODE POS ABUTTING)
markdown-ts--table-node-row(&optional NODE POS)
markdown-ts--table-parse-error-p(&optional NODE POS)
markdown-ts--table-tick-stale-p(POS)
markdown-ts--table-tick-update(POS)
markdown-ts-add-final-newline()
markdown-ts-at-code-block-p(&optional POS)
markdown-ts-at-table-p(&optional POS ABUTTING)
markdown-ts-buffer-string()
markdown-ts-code-block-context-mode(&optional ARG)
markdown-ts-code-block-in-context-mode(&optional ARG)
markdown-ts-code-block-language-at(&optional POS)
markdown-ts-code-block-mode-at(&optional POS)
markdown-ts-demote()
markdown-ts-emphasize(&optional CHAR)
markdown-ts-in-table-mode(&optional ARG)
markdown-ts-insert-list-item()
markdown-ts-insert-structure(&optional CHAR)
markdown-ts-mode()
markdown-ts-mode--initialize()
markdown-ts-mode-install-parsers(ARG)
markdown-ts-mode-maybe()
markdown-ts-mode-menu(ARG1)
markdown-ts-move-subtree-down()
markdown-ts-move-subtree-up()
markdown-ts-move-to-next-code-block(ARG)
markdown-ts-move-to-previous-code-block(ARG)
markdown-ts-newline()
markdown-ts-outline-cycle()
markdown-ts-promote()
markdown-ts-remove-emphasis()
markdown-ts-renumber-list(&optional START)
markdown-ts-table--goto-column(COLUMN &optional NO-ERROR)
markdown-ts-table-align-column(&optional ALIGN)
markdown-ts-table-align-column-center()
markdown-ts-table-align-column-left()
markdown-ts-table-align-column-right()
markdown-ts-table-align-table(&optional ALIGN-CELLS)
markdown-ts-table-clone-column-left()
markdown-ts-table-clone-column-right()
markdown-ts-table-clone-row-above()
markdown-ts-table-clone-row-below()
markdown-ts-table-convert-csv-region(BEG END &optional HEADER-LINE REPLACE)
markdown-ts-table-convert-region(BEG END &optional HEADER-LINE REPLACE FORMAT)
markdown-ts-table-convert-tsv-region(BEG END &optional HEADER-LINE REPLACE)
markdown-ts-table-delete-column()
markdown-ts-table-delete-row()
markdown-ts-table-delete-table()
markdown-ts-table-export-table(&optional DISPLAY FORMAT)
markdown-ts-table-export-table-csv(&optional DISPLAY)
markdown-ts-table-export-table-tsv(&optional DISPLAY)
markdown-ts-table-insert-column(&optional LEFT CLONE)
markdown-ts-table-insert-column-left(&optional CLONE)
markdown-ts-table-insert-column-right(&optional CLONE)
markdown-ts-table-insert-row(&optional ABOVE CLONE)
markdown-ts-table-insert-row-above(&optional CLONE)
markdown-ts-table-insert-row-below(&optional CLONE)
markdown-ts-table-insert-table(&optional NROWS NCOLS HEADINGS BODY)
markdown-ts-table-mode(&optional ARG)
markdown-ts-table-move-column(&optional LEFT)
markdown-ts-table-move-column-left()
markdown-ts-table-move-column-right()
markdown-ts-table-move-row(&optional DOWN)
markdown-ts-table-move-row-down()
markdown-ts-table-move-row-up()
markdown-ts-table-next-cell(&optional N)
markdown-ts-table-next-row(&optional N)
markdown-ts-table-previous-cell()
markdown-ts-table-previous-row()
markdown-ts-table-transpose-table()
markdown-ts-toggle-checkbox()
markdown-ts-toggle-hide-markup()
markdown-ts-toggle-inline-images()
markdown-ts-view-mode()

Defined faces (35)

markdown-ts-block-quoteFace for Markdown block quotes.
markdown-ts-boldFace for Markdown strong emphasis (bold) text.
markdown-ts-code-blockFace for Markdown fenced code block content. Alter this face to add a ‘:background’ for a visually distinct code block region, e.g.: (set-face-attribute 'markdown-ts-code-block nil :background "gray95")
markdown-ts-code-block-markup-hiddenFace for Markdown fenced code block content when markup is hidden. Used instead of ‘markdown-ts-code-block’ when ‘markdown-ts-hide-markup’ is non-nil.
markdown-ts-delimiterFace for the # before Markdown headings.
markdown-ts-emphasisFace for Markdown emphasis (italic) text.
markdown-ts-entity-referenceFace for named HTML entity references like &amp; and &copy;.
markdown-ts-hard-line-break-backslashFace for Markdown hard line breaks introduced by a trailing backslash.
markdown-ts-hard-line-break-backslash-hiddenFace for trailing-backslash hard line break when markup is hidden.
markdown-ts-hard-line-break-spaceFace for Markdown hard line breaks introduced by two trailing spaces. The trailing spaces are otherwise invisible, so they are shown as a shadow-colored block.
markdown-ts-hard-line-break-space-hiddenFace for trailing-spaces hard line break when markup is hidden.
markdown-ts-heading-1Face for first level Markdown headings.
markdown-ts-heading-2Face for second level Markdown headings.
markdown-ts-heading-3Face for third level Markdown headings.
markdown-ts-heading-4Face for fourth level Markdown headings.
markdown-ts-heading-5Face for fifth level Markdown headings.
markdown-ts-heading-6Face for sixth level Markdown headings.
markdown-ts-html-blockFace for HTML blocks in Markdown.
markdown-ts-html-tagFace for inline HTML tags in Markdown.
markdown-ts-in-code-blockFace for when point is in a Markdown code block. See ‘markdown-ts-code-block-in-context-mode’. Alter this face to add a ‘:background’ for a visually distinct table region, e.g.: (set-face-attribute 'markdown-ts-in-code-block :background "gray95")
markdown-ts-in-tableFace for Markdown ‘markdown-ts-in-table-mode’ when point is in a table. Alter this face to add a ‘:background’ for a visually distinct table region, e.g.: (set-face-attribute 'markdown-ts-in-table nil :background "gray95")
markdown-ts-language-keywordFace for the language keyword for Markdown code blocks.
markdown-ts-latexFace for LaTeX / math content in Markdown ($...$ and $$...$$).
markdown-ts-linkFace for Markdown link text and image descriptions.
markdown-ts-link-destinationFace for Markdown link destinations (URLs).
markdown-ts-list-markerFace for Markdown list markers like - and *.
markdown-ts-numeric-character-referenceFace for numeric character references like &#65; and &#x41;.
markdown-ts-setext-headingFace for setext Markdown headings (headings underlined by === or ---).
markdown-ts-strikethroughFace for Markdown strikethrough text.
markdown-ts-table-cellFace for Markdown pipe table data cells.
markdown-ts-table-delimiter-cellFace for Markdown pipe table delimiter cells (--- separators).
markdown-ts-table-headerFace for Markdown pipe table header cells.
markdown-ts-task-checkedFace for Markdown checked task list markers.
markdown-ts-task-uncheckedFace for Markdown unchecked task list markers.
markdown-ts-thematic-breakFace for Markdown thematic breaks (horizontal rules). Customize this face to add a :background for a full-width visual rule.