if v:version < 700 || &cp finish endif call add(g:ctrlp_ext_vars, { \ 'init': 'ctrlp#bookmarks#init()', \ 'accept': 'ctrlp#bookmarks#accept', \ 'lname': 'vim-bookmarks', \ 'sname': '', \ 'type': 'line', \ 'sort': 0, \ 'specinput': 0, \ }) function! ctrlp#bookmarks#init() abort let l:text=[] let l:files = sort(bm#all_files()) for l:file in l:files let l:line_nrs = sort(bm#all_lines(l:file), "bm#compare_lines") for l:line_nr in l:line_nrs let l:bookmark = bm#get_bookmark_by_line(l:file, l:line_nr) let l:detail = printf("%s", l:bookmark.annotation !~ '^\s*$' ? \ l:bookmark.annotation \ : l:bookmark.content !~ '^\s*$' ? \ l:bookmark.content \ : "EMPTY LINE") call add(l:text, l:detail) endfor endfor return l:text endfunction function! ctrlp#bookmarks#accept(mode, str) abort if a:mode ==# 'e' let l:HowToOpen='e' elseif a:mode ==# 't' let l:HowToOpen='tabnew' elseif a:mode ==# 'v' let l:HowToOpen='vsplit' elseif a:mode ==# 'h' let l:HowToOpen='sp' endif call ctrlp#exit() let l:text=[] let l:files = sort(bm#all_files()) for l:file in l:files let l:line_nrs = sort(bm#all_lines(l:file), "bm#compare_lines") for l:line_nr in l:line_nrs let l:bookmark = bm#get_bookmark_by_line(l:file, l:line_nr) if a:str ==# l:bookmark.annotation execute l:HowToOpen." ".l:file execute ":".l:line_nr break elseif a:str ==# l:bookmark.content execute l:HowToOpen." ".l:file execute ":".l:line_nr break elseif a:str ==# "EMPTY LINE" execute l:HowToOpen." ".l:file execute ":".l:line_nr break endif endfor endfor endfunction let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars) function! ctrlp#bookmarks#id() abort return s:id endfunction " vim:nofen:fdl=0:ts=2:sw=2:sts=2