markdown and toggle term updates

This commit is contained in:
Thomas Smallwood 2026-03-04 09:27:46 +01:00
parent 4852afab09
commit 978fd1ee21
4 changed files with 51 additions and 34 deletions

View file

@ -1,16 +1,16 @@
{
"CopilotChat.nvim": { "branch": "main", "commit": "743d6005fb412c85309d3f3aa45f18f3a2fb2098" },
"LazyVim": { "branch": "main", "commit": "28db03f958d58dfff3c647ce28fdc1cb88ac158d" },
"LazyVim": { "branch": "main", "commit": "fca0af57cc3851b14f96a795a9c9bfafc5096dd1" },
"blink.cmp": { "branch": "main", "commit": "4b18c32adef2898f95cdef6192cbd5796c1a332d" },
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
"catppuccin": { "branch": "main", "commit": "0a5de4da015a175f416d6ef1eda84661623e0500" },
"claudecode.nvim": { "branch": "main", "commit": "aa9a5cebebdbfa449c1c5ff229ba5d98e66bafed" },
"conform.nvim": { "branch": "master", "commit": "40dcec5555f960b0a04340d76eabdf4efe78599d" },
"copilot.lua": { "branch": "master", "commit": "ef4bfc579b404c531c1738bacca82ed61501d877" },
"copilot.lua": { "branch": "master", "commit": "00446a63cba4cc59bb24fc1e210a555a3e4acdfb" },
"flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
"gitsigns.nvim": { "branch": "main", "commit": "9f3c6dd7868bcc116e9c1c1929ce063b978fa519" },
"grug-far.nvim": { "branch": "main", "commit": "9370422e5cdd55321c0b8c4880082c5fd4e52e99" },
"grug-far.nvim": { "branch": "main", "commit": "ac52ee2d87399dfd7b0d59d5b1d2bbaf2a4028f1" },
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
"lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" },
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
@ -24,7 +24,7 @@
"noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-lint": { "branch": "master", "commit": "606b823a57b027502a9ae00978ebf4f5d5158098" },
"nvim-lspconfig": { "branch": "master", "commit": "e0fae251f8459940331960106d4bd9457cec23de" },
"nvim-lspconfig": { "branch": "master", "commit": "ead0f5f342d8d323441e7d4b88f0fc436a81ad5f" },
"nvim-osc52": { "branch": "main", "commit": "04cfaba1865ae5c53b6f887c3ca7304973824fb2" },
"nvim-treesitter": { "branch": "main", "commit": "cb2cb74f3c3cbbcc17e79cada2060165d616d849" },
"nvim-treesitter-textobjects": { "branch": "main", "commit": "a0e182ae21fda68c59d1f36c9ed45600aef50311" },
@ -32,8 +32,8 @@
"persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"precognition.nvim": { "branch": "main", "commit": "06e4bfa339ddc55a49fd1adcbb403f6e0855c43b" },
"render-markdown.nvim": { "branch": "main", "commit": "1c958131c083c8557ea499fdb08c88b8afb05c4e" },
"snacks.nvim": { "branch": "main", "commit": "fe7cfe9800a182274d0f868a74b7263b8c0c020b" },
"render-markdown.nvim": { "branch": "main", "commit": "1641b434bda26e0f4e3610985b3357fc213cf834" },
"snacks.nvim": { "branch": "main", "commit": "9912042fc8bca2209105526ac7534e9a0c2071b2" },
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
"toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" },
"tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" },

View file

@ -64,7 +64,7 @@ end
-- Strips the stats suffix from a heading line, returning the bare heading.
local function strip_stats(line)
return (line:gsub("%s+✅%d+%d+%s*$", ""))
return (line:gsub("%s+✅%d+/%d+%s*$", ""))
end
-- Counts [x] and [ ] tasks in a section starting at header_line (1-indexed).
@ -89,7 +89,7 @@ local function update_section_stats()
if line:match("^## ") then
local base = strip_stats(line)
local done, todo = count_section_tasks(lines, i)
local new_line = base .. "" .. done .. "" .. todo
local new_line = base .. "" .. done .. "/" .. todo
if new_line ~= line then
lines[i] = new_line
changed = true
@ -355,35 +355,43 @@ end
function M.setup()
local group = vim.api.nvim_create_augroup("MarkdownTasks", { clear = true })
local function setup_buf(buf)
local o = function(desc) return { buffer = buf, desc = desc } end
vim.keymap.set("n", "<leader>mn", new_task, o("New task"))
vim.keymap.set("n", "<leader>mx", toggle_task, o("Toggle done"))
vim.keymap.set("n", "<leader>mf", toggle_task_format, o("Toggle task format"))
vim.keymap.set("n", "<leader>mj", jump_next_task, o("Next task"))
vim.keymap.set("n", "<leader>mk", jump_prev_task, o("Prev task"))
vim.keymap.set("n", "<leader>ml", list_tasks_in_file, o("List tasks (file)"))
vim.keymap.set("n", "<leader>ms", search_all_tasks, o("Search all tasks"))
vim.keymap.set("n", "<leader>mt", insert_date, o("Insert date header"))
vim.keymap.set("n", "<leader>mmg", move_to_general, o("Move → general"))
vim.keymap.set("n", "<leader>mmt", move_to_today, o("Move → today"))
vim.keymap.set("n", "<leader>mmT", move_to_tomorrow, o("Move → tomorrow"))
vim.keymap.set("n", "<leader>mmy", move_to_yesterday, o("Move → yesterday"))
vim.keymap.set("n", "<leader>mmd", move_to_date, o("Move → date…"))
-- Update stats after leaving insert mode (covers new_task completions).
vim.api.nvim_create_autocmd("InsertLeave", {
buffer = buf,
group = group,
callback = update_section_stats,
})
end
vim.api.nvim_create_autocmd("FileType", {
pattern = "markdown",
group = group,
callback = function(ev)
local buf = ev.buf
local o = function(desc) return { buffer = buf, desc = desc } end
vim.keymap.set("n", "<leader>mn", new_task, o("New task"))
vim.keymap.set("n", "<leader>mx", toggle_task, o("Toggle done"))
vim.keymap.set("n", "<leader>mf", toggle_task_format, o("Toggle task format"))
vim.keymap.set("n", "<leader>mj", jump_next_task, o("Next task"))
vim.keymap.set("n", "<leader>mk", jump_prev_task, o("Prev task"))
vim.keymap.set("n", "<leader>ml", list_tasks_in_file, o("List tasks (file)"))
vim.keymap.set("n", "<leader>ms", search_all_tasks, o("Search all tasks"))
vim.keymap.set("n", "<leader>mt", insert_date, o("Insert date header"))
vim.keymap.set("n", "<leader>mmg", move_to_general, o("Move → general"))
vim.keymap.set("n", "<leader>mmt", move_to_today, o("Move → today"))
vim.keymap.set("n", "<leader>mmT", move_to_tomorrow, o("Move → tomorrow"))
vim.keymap.set("n", "<leader>mmy", move_to_yesterday, o("Move → yesterday"))
vim.keymap.set("n", "<leader>mmd", move_to_date, o("Move → date…"))
-- Update stats after leaving insert mode (covers new_task completions).
vim.api.nvim_create_autocmd("InsertLeave", {
buffer = buf,
group = group,
callback = update_section_stats,
})
end,
callback = function(ev) setup_buf(ev.buf) end,
})
-- VeryLazy fires after the initial buffer's FileType event, so apply
-- keymaps to any markdown buffers that are already open.
for _, buf in ipairs(vim.api.nvim_list_bufs()) do
if vim.api.nvim_buf_is_loaded(buf) and vim.bo[buf].filetype == "markdown" then
setup_buf(buf)
end
end
end
return M

View file

@ -10,7 +10,7 @@ return {
open_mapping = [[<leader>tt]],
direction = "float",
float_opts = { border = "rounded" },
shell = vim.fn.exepath("zsh") .. " -l -i",
shell = vim.o.shell .. " -l -i",
},
config = function(_, opts)

View file

@ -0,0 +1,9 @@
return {
"folke/which-key.nvim",
opts = {
spec = {
{ "<leader>m", group = "markdown" },
{ "<leader>mm", group = "move task" },
},
},
}