From 6fd24afbfaa21b5bfbe722b97011d8a252899bea Mon Sep 17 00:00:00 2001 From: Barrett Ruth Date: Fri, 6 Mar 2026 11:24:05 -0500 Subject: [PATCH] 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. --- lua/pending/diff.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lua/pending/diff.lua b/lua/pending/diff.lua index 5df332f..6b79b8a 100644 --- a/lua/pending/diff.lua +++ b/lua/pending/diff.lua @@ -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'