From a891a06dae3f869ce7a5e484a37443f01858d024 Mon Sep 17 00:00:00 2001 From: DarkWiiPlayer Date: Tue, 5 Oct 2021 15:03:54 +0200 Subject: [PATCH] Add vim annotate script --- vim/plugin/annotate.vim | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 vim/plugin/annotate.vim diff --git a/vim/plugin/annotate.vim b/vim/plugin/annotate.vim new file mode 100644 index 0000000..250141f --- /dev/null +++ b/vim/plugin/annotate.vim @@ -0,0 +1,41 @@ +let s:namespace = nvim_create_namespace("annotate_cursor") +let s:callbacks = [] + +function! Blame() + if exists("b:blame") + let l:lineblame = b:blame[line('.')-1] + return l:lineblame['author'] . ' @ ' . l:lineblame['time'] + end +endfun + +function! Annotate(callback) + call insert(s:callbacks, a:callback) + call s:update() +endfun +com! -nargs=1 Annotate call Annotate(funcref()) + +function! Deannotate(callback) + let s:callbacks = filter(s:callbacks, { idx, value -> value != a:callback }) + call s:update() +endfun +com! -nargs=1 Deannotate call Deannotate(funcref()) + +function! Annotated(callback) + for l:Callback in s:callbacks + if l:Callback == a:callback + return 1 + end + endfor + return 0 +endfun + +function! s:update() + call nvim_buf_clear_namespace(0, s:namespace, 1, -1) + for l:Callback in s:callbacks + call nvim_buf_set_virtual_text(0, s:namespace, line('.')-1, [[l:Callback(), "comment"]], {}) + endfor + redraw! +endfun + +au CursorMoved * call update() +au CursorMovedI * call update()