ctrl+shift+p filters: :st2 :st3 :win :osx :linux
Browse

Markdown​Preview​Overlay

by flashmodel ST4 Trending

In-editor Markdown preview & reading mode for Sublime Text. Show preview inside the same tab without external browser or split panes

Details

Installs

  • Total 887
  • Win 325
  • Mac 450
  • Linux 112
Oct 23 Oct 22 Oct 21 Oct 20 Oct 19 Oct 18 Oct 17 Oct 16 Oct 15 Oct 14 Oct 13 Oct 12 Oct 11 Oct 10 Oct 9 Oct 8 Oct 7 Oct 6 Oct 5 Oct 4 Oct 3 Oct 2 Oct 1 Sep 30 Sep 29 Sep 28 Sep 27 Sep 26 Sep 25 Sep 24 Sep 23 Sep 22 Sep 21 Sep 20 Sep 19 Sep 18 Sep 17 Sep 16 Sep 15 Sep 14 Sep 13 Sep 12 Sep 11 Sep 10 Sep 9
Windows 9 24 18 25 18 8 4 18 19 19 10 15 19 13 27 18 13 27 9 14 8 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0
Mac 5 29 23 19 19 11 12 17 21 21 30 26 18 22 27 45 26 30 36 15 7 5 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Linux 3 4 2 7 7 1 5 4 6 7 9 6 4 2 7 8 8 12 8 2 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Readme

Source
raw.​githubusercontent.​com

MarkdownPreviewOverlay

Package Control

MarkdownPreviewOverlay is an editor-native Markdown preview and reading mode for Sublime Text. It renders formatted Markdown directly inside your active tab—no external browser, no split-pane, and zero context switching.

MarkdownPreviewOverlay Demo

This overlay concept was originally designed as the chat preview feature for TermMate, and extracted into a standalone package as discussed in the forum topic: Provide markdown preview mode using folded source and phantom. Join the forum and share your feedback in that thread!

Features & Capabilities

Compared to traditional external browsers or split-pane previewers, MarkdownPreviewOverlay renders your Markdown preview directly inside the same editor view while keeping your plain-text workflow intact:

  • Zero Context-Switching: Read and edit in the exact same view—never leave Sublime Text or juggle external browser windows.
  • No Split-Pane Clutter: Maximizes your entire editor width without dividing the screen into cramped columns or causing premature line wrapping.
  • Exact Scroll & Cursor Preservation: Seamlessly preserves and restores your exact cursor positions, active selections, viewport scroll offset, and manual code folds when toggling modes.
  • Lightweight & Theme-Adaptive: Powered directly by Sublime Text’s built-in minihtml engine (mdpopups) with zero background servers, minimal memory overhead, and automatic color scheme alignment.
  • Full Complex Markdown Support: Seamlessly renders complex Markdown constructs, featuring a custom table engine that auto-adapts to your viewport width, along with syntax-highlighted code blocks, blockquotes, and nested lists tailored for miniHTML.
  • Mermaid Diagrams: When a supported Mermaid CLI (@mermaid-js/mermaid-cli or merman-cli) is installed, fenced mermaid blocks automatically become PNG images. Rendering runs in the background, fits the preview width, and leaves code blocks unchanged if rendering fails. The CLI is discovered on PATH, in common install locations, or via user settings.

Note: Rendering is delegated directly to the mdpopups Package Control dependency without bundling a separate Markdown parser.

Installation

The easiest way to install is via Package Control:

  1. Open the Command Palette: Command+Shift+P (macOS) or Ctrl+Shift+P (Windows/Linux).
  2. Select Package Control: Install Package.
  3. Search for **MarkdownPreviewOverlay** and press Enter.

Usage

MarkdownPreviewOverlay provides seamless ways to enter, navigate, and exit preview mode without leaving your active editor view.

1. Interactive Phantom Buttons

The package injects lightweight, non-intrusive interactive controls directly into the buffer for saved files (enabled by default, can be hidden via "show_preview_button": false in settings):

  • Preview Mode: Click the **▣ Preview** button at the top of the file (displayed as a right-aligned annotation badge, or a compact inline ▣ icon if the line is long) to fold the source text and enter the preview overlay.
  • Edit Mode: Click the ✏️Edit source button in the top toolbar to exit preview mode. Your previous cursor selection, scroll position, original read-only status, and manual code folds are fully restored.

2. Command Palette

Press Command+Shift+P (macOS) or Ctrl+Shift+P (Windows/Linux) and search for Markdown Overlay (or type mdo):

Command Description
Markdown Overlay: Toggle Toggles seamlessly between Preview Mode and Edit Mode.
Markdown Overlay: Preview Mode Enters the rendered preview mode for the active Markdown document.
Markdown Overlay: Edit Mode Exits preview mode and returns to editing the source buffer.
Markdown Overlay: Refresh Forces a re-render of the preview layout (useful after resizing the window).

Note for Unsaved Buffers: To keep scratch view clean, the inline ▣ Preview button is only displayed for saved files on disk. For unsaved or untitled buffers, enter preview mode using the Command Palette or a keyboard shortcut.

Behavior & Document Lifecycle

  • Read-only Safety: Preview mode makes the buffer temporarily read-only to prevent accidental edits while viewing formatted text.
  • Buffer Integrity: Source folding uses standard Sublime Text region folding without modifying the buffer text or polluting the undo history.
  • Unsaved Buffers & Scratch Pads: The inline preview button is intentionally omitted on unsaved buffers or scratch pads to prevent visual clutter; use the Command Palette or a keyboard shortcut to preview them anytime.
  • Auto-Refresh: If the document is modified or saved, the preview updates automatically with debounced re-rendering.
  • Local Images Only: Only local image files are rendered; remote web images are not downloaded; resolving local relative image paths is enabled by default (disable via "resolve_image_paths": false).
  • Keyboard Navigation: In preview mode, native navigation keys (Up/Down arrows, PageUp/PageDown, Home/End, Cmd+Up/Down) automatically scroll the preview without requiring any custom keybindings.

Configuration

Access settings and key bindings via the menu: Preferences -> Package Settings -> MarkdownPreviewOverlay.

Settings

Settings can be customized via Preferences -> Package Settings -> MarkdownPreviewOverlay -> Settings (or directly in MarkdownPreviewOverlay.sublime-settings):

Setting Description
show_preview_button Display the interactive ▣ Preview button at the top of saved files in edit mode (default: true).
sync_preview_position Synchronize preview scroll position with the current Markdown source position (default: true).
hide_line_numbers Automatically hide line numbers and the gutter in preview mode (default: true).
show_status_indicator Display the active mode indicator in the status bar during preview mode (default: true).
table_max_width Maximum character width for rendered tables; null auto-fits the viewport width (default: null).
resolve_image_paths Rewrite local relative image paths to absolute file:// URIs for rendering (enabled by default: true). Set to false if prefer image paths to be untouched.
image_max_width Maximum display width in pixels for rendered images when resolve_image_paths is enabled (default: 900).
enable_mermaid Automatically render fenced mermaid code blocks as inline images in preview mode (default: true).
mermaid_cli Custom command or path for Mermaid CLI (mmdc or merman-cli). When empty "" (default), auto-discovers on common directories.
keyboard_scroll_lines Number of lines to scroll per arrow key press (Up/Down) in preview mode (default: 3.0).

Key Bindings

MarkdownPreviewOverlay does not register a shortcut to avoid collisions. Key bindings are provided as a keymap example.

To enable keyboard shortcuts, open Preferences -> Package Settings -> MarkdownPreviewOverlay -> Key Bindings (or copy from Example.sublime-keymap into your User keymap):

[
    {
        "keys": ["primary+alt+r"],
        "command": "markdown_preview_overlay_toggle",
        "context": [{ "key": "setting.is_widget", "operand": false }]
    }
]

primary+alt+r automatically maps to Cmd+Option+R on macOS and Ctrl+Alt+R on Windows/Linux in Sublime Text.

Development installation

Clone or link this directory as Packages/MarkdownPreviewOverlay, then run Package Control: Satisfy Dependencies. Package Control installs mdpopups according to dependencies.json.

Sublime Text build 4050 or newer is required. The package selects Sublime's Python 3.8 plugin host through .python-version.

License

This project is licensed under the Apache-2.0 License.