Bullet Depth Markers

approved

by michael-5653

Keeps unordered list markers (-, *, +) in sync with nesting depth, both in the file and on screen. - This plugin has not been manually reviewed by Obsidian staff.

95 downloadsUpdated 1mo agoMIT

Bullet Depth Markers

Child bullets get a different marker. In the file. Not just on screen.

- Framing
	* Layout
		+ Gridlines
			- Column A      ← depth 4, cycle repeats
	* Inspection

Depth 1 is -. Depth 2 is *. Depth 3 is +. Then it repeats. Shows as ● ○ ▪ in both Live Preview and Reading view.

Why not a CSS snippet

CSS only changes the look. Your file stays - all the way down. This changes the file. So export, grep and diffs see the structure too.

Install

Do one of these. Then in Obsidian: Settings → Community plugins → Reload → enable Bullet Depth Markers.

Mac

git clone https://github.com/MichaelNguyen5653/Bullet-Depth-Markers.git
cd Bullet-Depth-Markers
./install.sh ~/Documents/YourVault

Windows (Git Bash)

git clone https://github.com/MichaelNguyen5653/Bullet-Depth-Markers.git
cd Bullet-Depth-Markers
./install.sh "/c/Users/YOU/Documents/YourVault"

Manual (any OS)

Copy these 3 files:

main.js
styles.css
manifest.json

Into this folder (make it if missing):

YourVault/.obsidian/plugins/bullet-depth-markers/

How it works

Takes no hotkeys. Obsidian indents like normal. The plugin fixes the marker right after. So it works with Tab, drag, paste — anything.

  • Undo is one step.
  • Cursor never jumps. One character swaps for one character.

Leaves alone

  • Numbered lists. Keep their numbers. Still count as a level.
  • Code blocks, frontmatter, ---.
  • Old notes. A list is only fixed when you edit it.

Checkboxes do change. - [ ] becomes * [ ]. Still a checkbox.

Settings

Marker sequence. Default - * +. Only -, * and + are allowed — nothing else is a real Markdown list marker.

Dev

No build step. Obsidian loads main.js as-is.

./run-tests.sh

Uses node's built-in test runner. No node? It falls back to VS Code's Electron binary. The core of main.js is pure functions, so tests run outside Obsidian. See DESIGN.md for the reasoning.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.