simple-todo is a lightweight VS Code extension for .todo files. It recreates the minimal text-based workflow: type simple checklist lines, mark progress with a single shortcut, and keep sections organized through automatic header states and color cues.
Features
Toggle tasks through the lifecycle - → ▶ → ✔ with Cmd+D (or Ctrl+D on Windows/Linux by remapping the command).
Promote/demote completed items manually with Cmd+H without jumping to the next task.
Clear all completed entries in one shot with Cmd+E.
Automatic header glyph updates: parent sections flip between pending (-), in progress (◐), and done (✔) based on their children.
Decoration colors and bundled theme keep ✔/-/◐/▶ visually distinct.
The bundled syntax grammar adds highlighting for tasks, headers, comments, and tags (@owner, etc.).
Usage
Create a file that ends with .todo.
Add entries using the prefixes:
- pending task
▶ talking / in-progress task (applied when you press Cmd+D on a pending line)
✔ completed task
Any of the above ending with : becomes a header and will summarize the state of the lines indented underneath it.
Use the provided key bindings while the editor language id is todo.
You can also add comments with # and lightweight tags with @someone.
Commands
Command ID
Title
Default Keybinding
Notes
todo.toggleDone
Todo: Toggle Done on Current Line
Cmd+D
Cycles pending → talking → done and auto-focuses the next task after completion.
todo.adjustCompletedTask
Todo: Adjust Completed Task
Cmd+H
Manual cycle ✔ → ▶ → - without cursor movement.
todo.clearDone
Todo: Clear Completed Tasks
Cmd+E
Removes every ✔ line and re-evaluates headers.
Rebind the commands if you prefer different shortcuts.
Color Legend
✔ markup.inserted.todo – bright green
markup.deleted.todo – red
▶ markup.changed.todo.talking – cyan
◐ headers entity.name.section.todo.* – bold with green/red/gold depending on state
The bundled Todo Presenter theme exposes those scopes to any other color theme if you prefer to copy the settings.
Build & Release
npm install
npm run lint # type-checks the extension
npm run build # bundles into out/extension.js
Package for the Marketplace with vsce package and publish as usual. Update publisher and other metadata in package.json before sharing publicly.