List Tree Indentation Guides

by obsidiest
5
4
3
2
1
Score: 50/100

Description

Reviews

No reviews yet.

Stats

1
stars
211
downloads
0
forks
18
days
17
days
18
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
13
commits

Latest Version

19 days ago

Changelog

List Tree Indentation Guides 1.1.0

  • Adds Active Cursor List Threading, disabled by default. In Live Preview and Source mode, the focused editor caret replaces hover as the activation source for every enabled regular and orphan active-item or all-branches threading submode.
  • Keeps Reading-mode List Threading hover-based because Reading mode has no editor caret.
  • Replaces all six Reading-mode :has() selectors with delegated pointer state classes, preserving the same paths while avoiding broad selector invalidation.
  • Uses Obsidian's createSvg() and createFragment() helpers throughout the editor overlay and removes the deprecated Range.detach() call identified by the Community directory review.
  • Preserves the post-1.0.6 README feature-preview screenshots, searchable settings, viewport-only rendering, synchronized precise Style Settings controls, and GitHub-attested release assets.

README file from

Github

List Tree Indentation Guides

List Tree Indentation Guides renders nested Obsidian lists as a visually connected tree. Each sibling group receives a continuous vertical spine, and each ordered, unordered, or task-list item receives a horizontal connector.

Example
├─ Example
│  ├─ Example
│  ├─ Example
│  │  └─ Example
│  └─ Example
└─ Example
   └─ Example

The implementation is scoped to rendered list items and CodeMirror's visible HyperMD-list-line-N rows. It measures the markers already rendered by Obsidian, coalesces editor updates to animation frames, and never scans the vault.

Feature Preview

With their corresponding toggles enabled:

List Static Tree Indentation Guides

Active List Item Threading

All Branches of an Active List Threading

Active List Item Threading - Orphan List

All Branches of an Active List Threading - Orphan List

Features

  • Connected tree guides for ordered, unordered, mixed, and task lists.
  • A global static-guide toggle plus independent rendering toggles for Live Preview, Source mode, and Reading mode.
  • Separate list blocks remain visually separate across both content and blank-line boundaries by default, with an optional continuation/gutter-spine setting.
  • Optional Logseq-style list threading that responds across the full hovered list-item row or, in editor modes, the active caret line.
  • A disabled-by-default Active Cursor List Threading override that changes regular and orphan list activation from hover to the focused editor caret in Live Preview and Source mode.
  • Independent active-item-path and all-branches threading subfeatures, each with its own optional blank-line block threading.
  • Threading from an immediately preceding non-bulleted/numbered list head.
  • Dedicated active-item and all-branches threading controls for orphan ordered and unordered list blocks.
  • A global threading toggle plus independent Live Preview, Source, and Reading-mode threading toggles.
  • Searchable settings, including aliases for common mode names.
  • Pop-out-window support.
  • Minimal-theme-compatible styling based on Obsidian variables.
  • Style Settings customization with exact numeric entry alongside every slider.
  • Unordered-list markers are visible by default and can be suppressed from Style Settings.

Plugin settings

Every plugin setting is searchable from Obsidian's Settings search. List static tree-guide rendering and all three mode preferences are enabled by default. Connecting separate list blocks is disabled by default. List Threading is globally disabled by default; Active List Item Threading, threading from an unmarked list head, Active Orphan List Threading, Active Orphan List Item Threading, and the three mode preferences are enabled so they take effect immediately if the global feature is enabled. Active Cursor List Threading, both all-branches options, and both blank-line list-block options are disabled by default.

Setting Purpose
Enable list static tree indentation guides Globally enables or disables the always-visible tree guides. Enabled by default.
Render in Live Preview Shows guides in the editable Live Preview view.
Render in Source mode Shows guides alongside raw Markdown list syntax.
Render in Reading mode Shows guides in rendered Markdown.
Connect separate list blocks Lets continuation/gutter spines bridge non-list content between editor list blocks. Disabled by default.
Enable list threading Enables Logseq-style active-list highlighting.
Active Cursor List Threading In Live Preview and Source mode, replaces hover activation with the focused editor caret for every enabled regular or orphan threading submode. Disabled by default; Reading mode remains hover-based.
Active List Item Threading Highlights the complete ancestor path to the active list item. Enabled by default.
Thread separate list blocks that are only separated by a blank line (Active Item) Lets an active-item path continue into an adjacent blank-line-separated list block. Disabled by default.
All Branches of an Active List Threading Highlights every branch in the active item’s list block. Disabled by default.
Thread separate list blocks that are only separated by a blank line (All Branches) Lets All Branches include adjacent blank-line-separated blocks. Disabled by default; nonblank content always separates threading blocks.
List threading from a non-bulleted/numbered list head Extends Active Item and All Branches threading from the immediately preceding unmarked line. Enabled by default.
Active Orphan List Threading Enables threading for top-level ordered or unordered list blocks without an unmarked list head. Enabled by default.
Active Orphan List Item Threading Highlights the path to the active item in an orphan list. Enabled by default.
All Branches of an Active Orphan List Threading Highlights every branch in the active orphan list block. Disabled by default.
Thread in Live Preview Allows hover- or caret-activated threading in Live Preview when the global feature is enabled.
Thread in Source mode Allows hover- or caret-activated threading in Source mode when the global feature is enabled.
Thread in Reading mode Allows hover-activated threading in Reading mode when the global feature is enabled.

Style Settings

Install and enable the community plugin Style Settings to customize:

  • Guide color.
  • Guide opacity.
  • Guide thickness.
  • Horizontal connector length.
  • Gap before the list marker or content.
  • First-branch vertical rise.
  • Connector vertical offset.
  • Reading-mode vertical overlap.
  • Solid, dashed, or dotted guide pattern.
  • Dash and dot spacing.
  • Visibility of unordered-list bullets in Live Preview and Reading mode (enabled by default).
  • Active-item and all-branches thread opacity, thickness, line caps, and corner radius.
  • Thread connector length, marker gap, and vertical offset.
  • Eight independently themed list-thread colors, each with an enabled-by-default toggle; deeper levels reuse the eighth color.
  • An enabled-by-default global fallback for disabled list-thread colors and a disabled-by-default global override with independently persisted light- and dark-mode native color inputs.
  • Reading-mode thread row height, segment overlap, parent reach, and marker offset.

Every numerical Style Settings slider receives a synchronized editable field. Typed in-range decimals are preserved exactly, including transient input such as 1. while editing; invalid or incomplete values revert only when editing finishes.

Installation

From a release

  1. Download main.js, manifest.json, and styles.css from the latest release.
  2. Create <vault>/.obsidian/plugins/list-tree-indentation-guides/.
  3. Copy the three files into that folder.
  4. Reload Obsidian and enable List Tree Indentation Guides under Community plugins.

Build from source

npm ci
npm run build

Copy main.js, manifest.json, and styles.css into the plugin folder in the vault.

Compatibility

  • Requires Obsidian 1.13.0 or newer.
  • Supports desktop and mobile.
  • Designed to coexist with Minimal theme and its Style Settings controls.

Development checks

npx tsc --noEmit
npm run lint
npm test
npm run build
git diff --exit-code -- main.js

The release workflow validates the clean build, confirms that committed main.js is current, creates the three standard Obsidian release assets, and publishes GitHub artifact attestations for each asset.

Acknowledgements

The list-threading interaction and rendered-list geometry are adapted from the MIT-licensed obsidiest/obsidian-bullet fork.

License

MIT