zk.vim/autoload/zkvim.vim

50 lines
1.4 KiB
VimL
Raw Permalink Normal View History

2023-12-11 13:25:28 +00:00
function! zkvim#create_link(zk_title, zk_id)
2024-02-17 13:20:32 +00:00
return '[' . a:zk_title . ']' . '(' . a:zk_id . ')'
2023-12-11 13:25:28 +00:00
endfunction
function! zkvim#create_append_link_command(zk_title, zk_id)
return 'normal! a' . zkvim#create_link(a:zk_title, a:zk_id)
endfunction
function! zkvim#get_new_zettel_id()
let zk_cmd = 'NOZKEDIT=true zk new'
return system(zk_cmd)
endfunction
function! zkvim#get_zettel_id(selection)
return trim(matchstr(a:selection, '[0-9]*\ ')) " TODO: Find out why this requires a space at the end
endfunction
function! zkvim#get_zettel_title(selection)
return trim(matchstr(a:selection, '#\zs.*\ze'))
endfunction
function! zkvim#znew()
let zk_filename = zkvim#get_new_zettel_id()
execute 'edit ' . zk_filename
endfunction
function! zkvim#zinsertnew(zk_title)
let zk_filename = zkvim#get_new_zettel_id()
let zk_id = zkvim#get_zettel_id(zk_filename)
execute zkvim#create_append_link_command(a:zk_title, zk_id)
execute 'write'
execute 'edit ' . zk_filename
execute 'normal! a# ' . a:zk_title
endfunction
function! zkvim#sink(selection) abort
let zk_id = zkvim#get_zettel_id(a:selection)
let zk_title = zkvim#get_zettel_title(a:selection)
execute zkvim#create_append_link_command(zk_title, zk_id)
endfunction
function! zkvim#zsearch()
let zk_cmd = 'zk list'
let fzf_options = #{
\source: zk_cmd,
\sink: function('zkvim#sink')}
call fzf#run(fzf_options)
endfunction