fix(diff): match optional checkbox char in parse_buffer patterns

Problem: `parse_buffer` used `%[.%]` which requires exactly one
character between brackets, failing to parse empty `[]` checkboxes.

Solution: Change to `%[.?%]` so the character is optional, matching
`[]`, `[ ]`, `[x]`, and `[!]` uniformly.
This commit is contained in:
Barrett Ruth 2026-03-06 11:24:05 -05:00
parent 9ea049b6a0
commit 6fd24afbfa

View file

@ -33,14 +33,14 @@ function M.parse_buffer(lines)
for i = start, #lines do
local line = lines[i]
local id, body = line:match('^/(%d+)/(- %[.%] .*)$')
local id, body = line:match('^/(%d+)/(- %[.?%] .*)$')
if not id then
body = line:match('^(- %[.%] .*)$')
body = line:match('^(- %[.?%] .*)$')
end
if line == '' then
table.insert(result, { type = 'blank', lnum = i })
elseif id or body then
local stripped = body:match('^- %[.%] (.*)$') or body
local stripped = body:match('^- %[.?%] (.*)$') or body
local state_char = body:match('^- %[(.-)%]') or ' '
local priority = state_char == '!' and 1 or 0
local status = state_char == 'x' and 'done' or 'pending'