diff --git a/README.md b/README.md new file mode 100644 index 0000000..7bb1938 --- /dev/null +++ b/README.md @@ -0,0 +1,75 @@ +# Todoer.nvim - Enhanced TODO Management for Neovim + +A Neovim plugin that provides enhanced TODO list management with smart handling of checkboxes, indentation, and list items in markdown and other text formats. + +## Features + +✅ **Current Functionality:** +- Smart TODO item creation with `ti`, `ta`, `to` +- Toggle checkboxes with `tt` +- Remove TODO markup with `td` +- Smart Enter key handling in insert mode: + - Creates new TODO items with proper indentation + - Handles empty TODO items by outdenting or terminating lists +- Tab/Shift-Tab indentation for TODO items +- Supports multiple list markers: `-`, `*`, `+` +- Works with markdown, text, and norg files by default + +## Known Issues + +🐛 **Current Bugs:** +- Tab indentation handling still uses feedkeys and needs refactoring +- Shift-Tab behavior may not be consistent with spaces vs tabs +- Edge cases with mixed indentation (spaces + tabs) not fully handled +- Cursor positioning could be improved in some scenarios + +## Roadmap + +📌 **Planned Improvements:** +- [ ] Refactor tab indentation to use proper buffer operations +- [ ] Add support for numbered lists +- [ ] Add support for nested TODO items with proper indentation +- [ ] Add visual selection operations for multiple TODOs +- [ ] Add commands for archiving completed items +- [ ] Add support for custom TODO markers +- [ ] Add support for custom checkbox states (e.g., `[ ]`, `[x]`, `[-]`) + +## Installation + +Using [lazy.nvim](https://github.com/folke/lazy.nvim): + +```lua +{ + 'your-username/todoer.nvim', + config = function() + require('todoer').setup({ + -- Optional: override default filetypes + filetypes = { 'markdown', 'text', 'norg' } + }) + end +} +``` + +## Configuration + +Default configuration: + +```lua +{ + filetypes = { "markdown", "text", "norg" } -- Filetypes to activate the plugin for +} +``` + +## Keybindings + +Normal Mode: +- `ti` - Convert line to TODO (cursor after `] `) +- `ta` - Convert line to TODO (cursor at end) +- `to` - Insert new TODO line below +- `tt` - Toggle checkbox state +- `td` - Remove TODO markup + +Insert Mode: +- `` - Smart enter behavior for TODO items +- `` - Indent TODO item +- `` - Outdent TODO item