Plugin: Wrapped line indentation (hanging indent in the markdown editor)

Note:
This plugin was created entirely with AI tools

Wrapped Line Indentation

Indent wrapped lines in Joplin’s Markdown editor so list items, task items, block quotes, and indented paragraphs stay visually aligned when they wrap.

What it does

Without this plugin, a long Markdown line wraps back to the start of the editor line. With this plugin, wrapped continuation lines align after the Markdown prefix.

Examples handled:

  • Bullet lists
  • Numbered lists
  • Task lists
  • Nested block quotes
  • Lists inside block quotes
  • Continuation paragraphs

The plugin skips fenced and indented code blocks.

Compatibility

  • Works with/without Joplin's render markup enabled.
  • Works whether you're using tabs or spaces for Indentation (or mixed tabs/spaces).
  • Works with proportional fonts.

Screenshot example

example image

Requirements

  • Joplin 3.5 or newer
  • Markdown editor using CodeMirror 6

Installation

Install from Joplin’s plugin manager, or install the .jpl file manually:

  1. Download com.bwat47.joplin-wrapped-line-indent.jpl from the latest release.
  2. In Joplin, open Tools > Options > Plugins.
  3. Select Install from file.
  4. Restart Joplin if prompted.

Notes

This plugin changes editor display only. It does not modify note content.

Development

npm test
npm run lint
npm run dist

This is great, thank you! For my needs at least, this plugin appears to work perfectly, even when I opt to use a proportional font in the editor for readability (instead of monospace).

This doesn't seem to work for me with ordinary tab-indented paragraph. I go to an ordinary note, type a tab to ident, then type a bunch of text and the wrapped lines go all the way back to the left edge. What am I doing wrong? I have version 3.6.10, Windows.

You might be hitting a markdown quirk that I should have been more clear about in the readme,

In markdown there isn't really a concept of a standalone indented paragraph (which was worded poorly in the readme), indenting a paragraph will create an indented code block instead.

The plugin does however work with "continuation" paragraphs (examples below):

Yeah, that's what I thought. Thanks for the clarification.