Skip to content

Releases: yibie/md-mode

md-mode 0.4.1

Choose a tag to compare

@yibie yibie released this 07 Sep 07:07

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-pitch and default use fonts with different character widths (for example Iosevka plus the stock Courier fixed-pitch on macOS) or after text-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-delay option (0.15 s idle by default, 0 for 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-pitch and default on 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

Choose a tag to compare

@yibie yibie released this 07 Sep 00:45

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-convert and 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

Choose a tag to compare

@yibie yibie released this 27 Aug 02:57

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

Choose a tag to compare

@yibie yibie released this 18 Aug 08:30

Full Changelog: v0.2.0...v0.2.1

md-mode 0.2.0

Choose a tag to compare

@yibie yibie released this 29 Jul 04:35

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-mode faces without loading or depending on
    markdown-mode; heading scale remains controlled by md-mode.

Requirements

  • Emacs 29.1 or newer.
  • Optional math previews: latex and dvisvgm.
  • Optional Mermaid previews: mmdc and 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