mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 12:30:05 +08:00
74 lines
2.1 KiB
VimL
Vendored
74 lines
2.1 KiB
VimL
Vendored
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
|