diff --git a/lua/pending/buffer.lua b/lua/pending/buffer.lua index d7f6b4c..e36972e 100644 --- a/lua/pending/buffer.lua +++ b/lua/pending/buffer.lua @@ -81,6 +81,22 @@ function M.get_indent() return 2 end +---@return string +function M.get_fold() + local lnum = vim.v.lnum + local m = _meta[lnum] + if not m then + return '0' + end + if m.type == 'header' then + return '>1' + elseif m.type == 'task' then + return '1' + else + return '0' + end +end + ---@param bufnr integer ---@param line_meta pending.LineMeta[] local function apply_extmarks(bufnr, line_meta) @@ -166,6 +182,18 @@ function M.render(bufnr) setup_syntax(bufnr) apply_extmarks(bufnr, line_meta) + + for _, winid in ipairs(vim.fn.win_findbuf(bufnr)) do + if current_view == 'category' then + vim.wo[winid].foldmethod = 'expr' + vim.wo[winid].foldexpr = 'v:lua.require("pending.buffer").get_fold()' + vim.wo[winid].foldlevel = 99 + vim.wo[winid].foldenable = true + else + vim.wo[winid].foldmethod = 'manual' + vim.wo[winid].foldenable = false + end + end end function M.toggle_view()