1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-03 18:10:05 +08:00
SpaceVim/bundle/vim-bookmarks/autoload/ctrlp/bookmarks.vim

74 lines
2.1 KiB
VimL
Raw Normal View History

2021-08-04 17:05:38 +08:00
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