summaryrefslogtreecommitdiffstats
path: root/.config/nvim/after/ftplugin/markdown.lua
diff options
context:
space:
mode:
authorThomas Vanbesien <tvanbesi@proton.me>2026-05-17 13:40:32 +0200
committerThomas Vanbesien <tvanbesi@proton.me>2026-05-17 13:40:32 +0200
commit5d0b19942d55dea5f30b2f1a58864cbec6522ba8 (patch)
treece14181a3fdd654cc1e8ea79b8601d058ac060b3 /.config/nvim/after/ftplugin/markdown.lua
parentabc9c89088a483437d39f80a200a1cb52484eee7 (diff)
downloaddotfiles-5d0b19942d55dea5f30b2f1a58864cbec6522ba8.tar.gz
dotfiles-5d0b19942d55dea5f30b2f1a58864cbec6522ba8.zip
feat(nvim): add commands to check/uncheck markdown checklist items
Diffstat (limited to '.config/nvim/after/ftplugin/markdown.lua')
-rw-r--r--.config/nvim/after/ftplugin/markdown.lua30
1 files changed, 30 insertions, 0 deletions
diff --git a/.config/nvim/after/ftplugin/markdown.lua b/.config/nvim/after/ftplugin/markdown.lua
index d0513b6..935d9ac 100644
--- a/.config/nvim/after/ftplugin/markdown.lua
+++ b/.config/nvim/after/ftplugin/markdown.lua
@@ -75,3 +75,33 @@ vim.api.nvim_set_hl(0, "@markup.link.label.markdown_inline", { underline = true,
vim.b.autoformat = true
vim.b.format_func = format
+
+local function check_checklist_item()
+ local line = vim.api.nvim_get_current_line()
+ if line:match("^%s*%- %[ %] ") == nil then
+ return
+ end
+ local edited_line = line:gsub("%[ %]", "[X]", 1)
+ edited_line = edited_line:gsub("^(%s*%- %[X%] )(.*)", "%1~%2~", 1)
+ local start = vim.api.nvim_win_get_cursor(0)[1] - 1
+ vim.api.nvim_buf_set_lines(0, start, start + 1, false, { edited_line })
+end
+
+local function uncheck_checklist_item()
+ local line = vim.api.nvim_get_current_line()
+ if line:match("^%s*%- %[X%] ") == nil then
+ return
+ end
+ local edited_line = line:gsub("%[X%]", "[ ]", 1)
+ edited_line = edited_line:gsub("~", "", 2)
+ local start = vim.api.nvim_win_get_cursor(0)[1] - 1
+ vim.api.nvim_buf_set_lines(0, start, start + 1, false, { edited_line })
+end
+
+vim.api.nvim_buf_create_user_command(0, "MarkdownListCheck", check_checklist_item, { desc = "Check checklist item" })
+vim.api.nvim_buf_create_user_command(
+ 0,
+ "MarkdownListUncheck",
+ uncheck_checklist_item,
+ { desc = "Uncheck checklist item" }
+)