" Todo file functionality "------------------------ " Simple todo function nnoremap <leader>dn :ToggleCompletion<cr>ddGpggj function! s:ToggleCompletion() let save_cursor = getpos(".") if match(getline('.'), '- \[\s\]') != -1 substitute/\[\s\]/[x]/ else substitute/\[x\]/[ ]/ endif call setpos('.', save_cursor) endfunction command! ToggleCompletion call <sid>ToggleCompletion() nnoremap X :ToggleCompletion<cr> syntax match doneTodo "\v%(\s+)?- \[x\].*" highlight link doneTodo Comment function! s:MakeTodo() let save_cursor = getpos(".") let has_dash = (match(getline('.'), '\v^\s?- \w') != -1) if has_dash s/\v(\s+)?- (.*)/\1- [ ] \2/ call setpos('.', save_cursor) normal! 4l else s/\v(\s+)?(.*)/\1- [ ] \2/ call setpos('.', save_cursor) normal! 6l endif silent! call repeat#set("\<Plug>MakeTodo", 0) endfunction command! MakeTodo call <sid>MakeTodo() nnoremap <Plug>MakeTodo :MakeTodo<cr> map <leader>ut <Plug>MakeTodo " vim:ft=vim