feat: statusline API, counts, and PendingStatusChanged event (#40)

Problem: no way to know about overdue or due-today tasks without
opening :Pending. No ambient awareness for statusline plugins.

Solution: add counts(), statusline(), and has_due() public API
functions backed by a module-local cache that recomputes after every
store.save() and store.load(). Fire a User PendingStatusChanged event
on every recompute. Extract is_overdue() and is_today() from duplicate
locals into parse.lua as public functions. Refactor views.lua and
init.lua to use the shared date logic. Add vimdoc API section and
integration recipes for lualine, heirline, manual statusline, startup
notification, and event-driven refresh.
This commit is contained in:
Barrett Ruth 2026-02-26 16:30:06 -05:00
parent 92c2c670c5
commit cd1cd1afd4
6 changed files with 507 additions and 69 deletions

View file

@ -503,6 +503,7 @@ function M.sync()
end
store.save()
require('pending')._recompute_counts()
vim.notify(
string.format(
'pending.nvim: Synced to Google Calendar (created: %d, updated: %d, deleted: %d)',