You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.2 KiB

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 <leader>ti, <leader>ta, <leader>to
  • Toggle checkboxes with <leader>tt
  • Remove TODO markup with <leader>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:

{
    'your-username/todoer.nvim',
    config = function()
        require('todoer').setup({
            -- Optional: override default filetypes
            filetypes = { 'markdown', 'text', 'norg' }
        })
    end
}

Configuration

Default configuration:

{
    filetypes = { "markdown", "text", "norg" } -- Filetypes to activate the plugin for
}

Keybindings

Normal Mode:

  • <leader>ti - Convert line to TODO (cursor after ] )
  • <leader>ta - Convert line to TODO (cursor at end)
  • <leader>to - Insert new TODO line below
  • <leader>tt - Toggle checkbox state
  • <leader>td - Remove TODO markup

Insert Mode:

  • <CR> - Smart enter behavior for TODO items
  • <Tab> - Indent TODO item
  • <S-Tab> - Outdent TODO item