A VS Code extension that makes the built-in Markdown preview render the Densho flavor of Markdown correctly.
Densho is a collaborative wiki
that exports pages as Markdown with a few custom conventions (callouts,
toggles, columns, chips, and inline marks). This extension teaches the native
preview those conventions by hooking into
contributes.markdown.markdownItPlugins (it augments the preview's own
markdown-it instance) and shipping a matching markdown.previewStyles sheet.
No commands, no settings, no extra activation: open any .md file and press
the preview button.
What it renders
| Feature | Syntax | Rendered as |
|---|---|---|
| Callouts | :::info / :::note / :::success / :::warning / :::danger ... ::: |
Colored callout with an icon |
| Custom callout | :::custom 🔥 ... ::: |
Callout using the emoji as its icon |
| Toggle | :::toggle Title ... ::: (alias :::details) |
Open <details> / <summary> |
| Columns | ::::columns wrapping one :::column per column |
Flex row of equal columns |
| Page break | :::pagebreak |
Printable separator (break-after: page) |
| Subpages | :::subpages (also :::subpages cards 3, :::subpages list 2) |
Muted placeholder box |
| Highlight | ==text== |
<mark> |
| Underline | ++text++ |
<u> |
| Subscript / superscript | ~x~ / ^x^ (inner spaces allowed) |
<sub> / <sup> |
| Task lists | - [ ] / - [x] |
Checkboxes |
| Mention chip | [@Name](https://github.com/DenshoApp/densho-vscode/blob/HEAD/mention:userId) |
Inline mention pill |
| Page link chip | [label](https://github.com/DenshoApp/densho-vscode/blob/HEAD/page:pageId) |
Inline page-link pill |
| Public link chip | [label](https://github.com/DenshoApp/densho-vscode/blob/HEAD/share:pageId) |
Inline public-link pill |
| Status badge | [text](https://github.com/DenshoApp/densho-vscode/blob/HEAD/status:color) with color info/note/success/warning/danger/neutral |
Colored status pill |
| Image size / align |  |
Image with width and alignment, params stripped from the alt |
| Front matter | leading --- YAML block |
Hidden from the preview |
:::pagebreak and :::subpages are written without a closing fence in
exported documents; the extension self-closes them the same way the app does.
Columns rely on Pandoc-style fence escalation (the enclosing fence always has
more colons than any fence inside it), which is handled natively.
The chip schemes (mention:, page:, share:, status:) render as inline
styled spans rather than navigable links, matching how they appear in the
Densho editor.
Math and Mermaid
Math ($...$ and $$...$$) is left untouched so the built-in "Markdown +
Math" support renders it. Fenced ```mermaid blocks are also left
alone; install the "Markdown Preview Mermaid Support" extension to render them
in the preview - the two pair well.