Densho Markdown Preview
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.