feat: note deletion

This commit is contained in:
2026-02-28 15:16:47 +01:00
parent dfc15def2b
commit 1afd45b91a
2 changed files with 27 additions and 0 deletions

View File

@@ -45,8 +45,11 @@ function denote#ft#qf()
command! -nargs=1 -range -buffer DenoteSetTitle :call denote#notes#settitle(<line1>, <q-args>)
command! -nargs=1 -range -buffer -complete=custom,denote#completion#tags DenoteTagAdd :call denote#notes#tagmod(<line1>, <line2>, <q-args>, v:true)
command! -nargs=1 -range -buffer -complete=custom,denote#completion#tags DenoteTagRm :call denote#notes#tagmod(<line1>, <line2>, <q-args>, v:false)
command! -range -buffer DenoteDelete :call denote#notes#rm(<line1>, <line2>)
nnoremap <buffer> C :DenoteSetTitle
nnoremap <buffer> + :DenoteTagAdd
nnoremap <buffer> - :DenoteTagRm
nnoremap <buffer> dd :DenoteDelete<CR>
" TODO: Add visual maps for line ranges +/-/delete
endif
endfunction

View File

@@ -144,3 +144,27 @@ function denote#notes#copy(origfile)
exe 'w'
endif
endfunction
" Delete notes from denote directory
function denote#notes#rm(line1, line2)
let l:items = getloclist(0, {'items': 1})['items']
if empty(l:items)
return
endif
for i in range(a:line1, a:line2)
let l:item = l:items[i-1]
let l:bufnr = l:item['bufnr']
let l:filename = bufname(l:bufnr)
let l:title = denote#meta#noteTitleFromFile(l:filename)
let l:answer = confirm('Are you sure you want to delete the note "' .. l:title .. '"?', "&Yes\n&No\n", 2, 'Question')
if l:answer != 1
continue
endif
" Wipe buffer, if it exists
if bufexists(l:filename)
exe 'silent bwipe ' .. fnameescape(l:filename)
endif
" Delete file
call delete(l:filename)
endfor
endfunction