diff options
| -rw-r--r-- | .config/nvim/after/ftplugin/markdown.lua | 30 |
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" } +) |
