No description
Find a file
Barrett Ruth 7c3ba31c43
feat: add cancelled task status with configurable state chars (#158)
Problem: the task lifecycle only has `pending`, `wip`, `blocked`, and
`done`. There is no way to mark a task as abandoned. Additionally,
state characters (`>`, `=`) are hardcoded rather than reading from
`config.icons`, so customizing them has no effect on rendering or
parsing.

Solution: add a `cancelled` status with default state char `c`, `g/`
keymap, `PendingCancelled` highlight, filter predicate, and archive
support. Unify state chars by making `state_char()`, `parse_buffer()`,
and `infer_status()` read from `config.icons`. Change defaults to
mnemonic chars: `w` (wip), `b` (blocked), `c` (cancelled).
2026-03-12 20:55:21 -04:00
.github doc: minify readme (#24) 2026-02-25 09:40:06 -05:00
doc feat: add cancelled task status with configurable state chars (#158) 2026-03-12 20:55:21 -04:00
lua/pending feat: add cancelled task status with configurable state chars (#158) 2026-03-12 20:55:21 -04:00
plugin feat: add cancelled task status with configurable state chars (#158) 2026-03-12 20:55:21 -04:00
scripts fix: harden sync backends and fix edit recompute (#66) 2026-03-05 11:50:13 -05:00
spec Revert "feat(views): add hide_done_categories config option (#153)" 2026-03-12 20:41:36 -04:00
syntax refactor: adopt markdown-style checkbox buffer format (#20) 2026-02-24 23:21:55 -05:00
.busted build: add tooling and dev environment configs 2026-02-24 15:08:44 -05:00
.editorconfig build: initial repo scaffold 2026-02-24 15:08:35 -05:00
.gitignore fix: harden sync backends and fix edit recompute (#66) 2026-03-05 11:50:13 -05:00
.luarc.json refactor(config): default icons to ascii (#55) 2026-03-04 17:49:30 -05:00
.pre-commit-config.yaml ci: format 2026-02-24 15:17:24 -05:00
flake.lock build: add tooling and dev environment configs 2026-02-24 15:08:44 -05:00
flake.nix ci: nix 2026-03-04 14:07:04 -05:00
LICENSE build: initial repo scaffold 2026-02-24 15:08:35 -05:00
pending.nvim-scm-1.rockspec feat: rename 2026-02-24 15:21:44 -05:00
README.md feat(forge): inline overlay rendering for forge links (#126) 2026-03-10 19:28:44 -04:00
selene.toml build: add tooling and dev environment configs 2026-02-24 15:08:44 -05:00
stylua.toml build: add tooling and dev environment configs 2026-02-24 15:08:44 -05:00
vim.yaml build: add tooling and dev environment configs 2026-02-24 15:08:44 -05:00

pending.nvim

Edit tasks like text.

Oil-like task management for todos in Neovim, inspired by oil.nvim and vim-fugitive

https://github.com/user-attachments/assets/f3898ecb-ec95-43fe-a71f-9c9f49628ba9

Features

  • Oil-style buffer editing: standard Vim motions for all task operations
  • Inline metadata: due:, cat:, rec: tokens parsed on :w
  • Rich date input: relative (+3d, tomorrow), weekdays, ordinals, custom formats, time suffixes
  • Recurring tasks with automatic next-date spawning on completion
  • Category and queue views with foldable sections
  • Multi-level undo (up to 20 saves, persisted across sessions)
  • Text objects (at/it/aC/iC) and motions (]]/[[/]t/[t)
  • Omnifunc completion for due:, cat:, and rec: tokens
  • Filters: cat:X, overdue, today, priority, wip, blocked
  • Google Calendar one-way push via OAuth PKCE
  • Google Tasks bidirectional sync via OAuth PKCE
  • S3 whole-store sync via AWS CLI with cross-device merge
  • Auto-authentication: sync actions trigger auth flows automatically
  • Forge links: reference GitHub/GitLab/Codeberg issues and PRs inline

Requirements

  • Neovim 0.10+
  • (Optionally) curl for Google Calendar and Google Tasks sync
  • (Optionally) aws CLI for S3 sync

Installation

Install with your package manager of choice or via luarocks:

luarocks install pending.nvim

Documentation

:help pending.nvim

Acknowledgements