feat: Adding a new function and shortcut for toggling a TODO checkbox
when using a markdown file for a TODO list.
This commit is contained in:
parent
4e384a71ae
commit
958f5a6e56
@ -1,3 +1,30 @@
|
||||
function string.insert(str1, str2, pos)
|
||||
return str1:sub(1, pos)..str2..str1:sub(pos+1)
|
||||
end
|
||||
|
||||
function toggleTODO(current_line)
|
||||
local todo_str = '%- %[ %] '
|
||||
local todo_checked_str = '%- %[x%] '
|
||||
|
||||
if current_line:find(todo_str, 1) then
|
||||
return string.gsub(current_line, todo_str, '', 1)
|
||||
elseif current_line:find(todo_checked_str, 1) then
|
||||
return string.gsub(current_line, todo_checked_str, '', 1)
|
||||
else
|
||||
local first_idx = current_line:find('[%-%w]', 1) - 1
|
||||
return string.insert(current_line, '- [ ] ', first_idx)
|
||||
end
|
||||
end
|
||||
|
||||
vim.api.nvim_create_user_command('ToggleTODO', function()
|
||||
local current_line = vim.api.nvim_get_current_line()
|
||||
local row, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
|
||||
local new_line = toggleTODO(current_line)
|
||||
|
||||
vim.api.nvim_buf_set_lines(0, row-1, row, true, {new_line})
|
||||
end, {})
|
||||
|
||||
return {
|
||||
'renerocksai/telekasten.nvim',
|
||||
config = function()
|
||||
@ -25,6 +52,7 @@ return {
|
||||
{ '<leader>zp', ':Telekasten panel<CR>' },
|
||||
{ '<leader>zn', ':Telekasten find_notes<CR>' },
|
||||
{ '<leader>zt', ':Telekasten show_tags<CR>' },
|
||||
{ '<leader>tt', ':ToggleTODO<CR>' },
|
||||
},
|
||||
-- lazy = false
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user