Releases: yibie/md-mode
Release list
md-mode 0.4.1
What's new
- Rendered tables always fit the window: the pixel budget is clamped to the window's pixel width, so tables no longer overflow when
fixed-pitchanddefaultuse fonts with different character widths (for example Iosevka plus the stock Courierfixed-pitchon macOS) or aftertext-scale-adjust. - Better column widths: each column's minimum is its longest unbreakable token (capped at half the available width), and extra space is shared from those minimums. Short columns keep their natural width instead of being squeezed to one character by a long neighbouring cell.
- Smooth window resizing: relayout is debounced behind the new
md-mode-table-relayout-delayoption (0.15 s idle by default,0for the old immediate behaviour), so dragging a frame edge no longer relayouts on every step. - Measurement cache: cell pixel measurements are cached per buffer and invalidated when fonts change, so repeated relayouts only measure text that wraps at new positions. On a four-column mixed-language demo table a repeat relayout dropped from about 660 ms to under 100 ms.
- README now explains how to keep
fixed-pitchanddefaulton the same family.
Demo
md-mode-0.4.1-table-resize.mp4 (attached below) shows a multilingual table with Chinese, Japanese, Korean, English, emoji and inline code cells reflowing while the window is resized.
PixPin_2026-09-06_23-56-29.mp4
Requirement
Rendered Markdown containing tables requires TextUI 0.8.0 or newer: https://github.com/yibie/textui/releases/tag/v0.8.0
Verification
- 259 ERT tests pass.
- md-mode.el and md-render.el byte-compile without warnings.
md-mode 0.4.0
What's new
- Keep Markdown tables completely source-shaped in editable mode: literal pipes, separators, alignment markers, and spacing remain visible.
- Make automatic source alignment opt-in; explicit table editing and alignment commands remain available.
- Render each complete table as one responsive multiline widget inside the normal md-mode rendered buffer.
- Use TextUI 0.8.0's standalone block-widget API for layout and attachment without handing ownership of the Markdown buffer to TextUI.
- Preserve exact Markdown source when leaving rendered view or saving.
- Relayout widgets on compatible window-width and text-scale changes while preserving point and modification state.
- Keep
md-render-convertand streaming integrations on the legacy string renderer. - Normalize short and over-wide body rows to the header column count.
Large-table performance
Scrolling rendered tables does not trigger layout. Layout work grows roughly linearly and occurs on initial rendering, compatible window resize, and text scaling. The README records representative four-column mixed CJK/ASCII measurements: about 43 ms for 100 rows, 90–95 ms for 300 rows, and 290 ms for 1,000 rows.
Requirement
Rendered Markdown containing tables requires TextUI 0.8.0 or newer: https://github.com/yibie/textui/releases/tag/v0.8.0
Verification
- 243 ERT tests pass.
- Byte compilation, Checkdoc, package-lint for md-mode.el, and whitespace checks pass.
md-mode 0.3.0
Highlights
- Add a rendered-view reading keymap for paging, heading navigation, cyclic TAB navigation, and refresh.
- Keep the keymap active only in the read-only rendered view.
- Make existing heading navigation work against rendered heading metadata.
- Add regression coverage; the full suite passes 217 tests.
Full Changelog: v0.2.1...v0.3.0
md-mode 0.2.1
md-mode 0.2.0
Highlights
- Edit Markdown with heading scale, emphasis, code, links, quotes, callouts,
tasks, and tables styled directly in the source buffer. - Switch to a complete read-only Rendered view and return to byte-for-byte
editable Markdown source. - Create, delete, align, and structurally edit Markdown tables with
width-aware wrapping in editing and rendered views. - Browse and navigate document structure through the live side-window TOC,
Imenu, folding, and Org-style heading commands. - Fold front matter and fenced code blocks, optionally at startup.
- Customize the six heading scales together or override each level through
its native Emacs face. - Keep mixed Chinese/Latin heading typography aligned when fallback fonts
inherit face sizes. - Render local LaTeX math as SVG, Mermaid as PNG, and PlantUML or Graphviz as
SVG. All media rendering is asynchronous, cached, source-preserving, and
visible when the first Rendered view completes. - Reuse compatible
markdown-modefaces without loading or depending on
markdown-mode; heading scale remains controlled bymd-mode.
Requirements
- Emacs 29.1 or newer.
- Optional math previews:
latexanddvisvgm. - Optional Mermaid previews:
mmdcand local Chrome or Chromium. - Optional PlantUML previews:
plantuml. - Optional Graphviz previews:
dot.
This release consolidates all improvements after the initial package baseline
into the 0.2 release line, including the accepted parts of community feedback
in issue #1.
Release commit: 26fc975