feat: complete task editing coverage (#109)
Problem: the task editing surface had gaps — category and recurrence had no keymaps, `:Pending edit` required knowing the task ID, tasks couldn't be reordered with a keymap, priority was binary (0/1), and `wip`/`blocked` states were documented but unimplemented. Solution: fill every cell so every property is editable in every way. - `gc`/`gr` keymaps for category select and recurrence prompt - cursor-aware `:Pending edit` (omit ID to use task under cursor) - `J`/`K` keymaps to reorder tasks within a category - multi-level priorities (`max_priority` config, `g!` cycles 0→1→2→3→0) - `+!!`/`+!!!` tokens in `:Pending edit`, `:Pending add`, `parse.body()` - `PendingPriority2`/`PendingPriority3` highlight groups - `gw`/`gb` keymaps toggle `wip`/`blocked` status - `>`/`=` state chars in buffer rendering and diff parsing - `PendingWip`/`PendingBlocked` highlight groups - sort order: wip → pending → blocked → done - `wip`/`blocked` filter predicates and icons
This commit is contained in:
parent
073541424e
commit
b06249f101
9 changed files with 498 additions and 101 deletions
|
|
@ -9,6 +9,8 @@
|
|||
---@field pending string
|
||||
---@field done string
|
||||
---@field priority string
|
||||
---@field wip string
|
||||
---@field blocked string
|
||||
---@field due string
|
||||
---@field recur string
|
||||
---@field category string
|
||||
|
|
@ -48,6 +50,12 @@
|
|||
---@field prev_header? string|false
|
||||
---@field next_task? string|false
|
||||
---@field prev_task? string|false
|
||||
---@field category? string|false
|
||||
---@field recur? string|false
|
||||
---@field move_down? string|false
|
||||
---@field move_up? string|false
|
||||
---@field wip? string|false
|
||||
---@field blocked? string|false
|
||||
|
||||
---@class pending.CategoryViewConfig
|
||||
---@field order? string[]
|
||||
|
|
@ -73,6 +81,7 @@
|
|||
---@field debug? boolean
|
||||
---@field keymaps pending.Keymaps
|
||||
---@field view pending.ViewConfig
|
||||
---@field max_priority? integer
|
||||
---@field sync? pending.SyncConfig
|
||||
---@field icons pending.Icons
|
||||
|
||||
|
|
@ -87,6 +96,7 @@ local defaults = {
|
|||
date_syntax = 'due',
|
||||
recur_syntax = 'rec',
|
||||
someday_date = '9999-12-30',
|
||||
max_priority = 3,
|
||||
view = {
|
||||
default = 'category',
|
||||
eol_format = '%c %r %d',
|
||||
|
|
@ -114,12 +124,20 @@ local defaults = {
|
|||
prev_header = '[[',
|
||||
next_task = ']t',
|
||||
prev_task = '[t',
|
||||
category = 'gc',
|
||||
recur = 'gr',
|
||||
move_down = 'J',
|
||||
move_up = 'K',
|
||||
wip = 'gw',
|
||||
blocked = 'gb',
|
||||
},
|
||||
sync = {},
|
||||
icons = {
|
||||
pending = ' ',
|
||||
done = 'x',
|
||||
priority = '!',
|
||||
wip = '>',
|
||||
blocked = '=',
|
||||
due = '.',
|
||||
recur = '~',
|
||||
category = '#',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue