let s:save_cpo = &cpo set cpo&vim function! unite#sources#vim_bookmarks#define_highlights() abort " {{{ highlight default link BookmarkUnitePath Comment highlight default link BookmarkUniteContent Normal endfunction " }}} let s:source = { \ 'name': 'vim_bookmarks', \ 'description': 'manipulate bookmarks of vim-bookmarks', \ 'hooks': {}, \} function! s:source.gather_candidates(args, context) abort " {{{ let files = sort(bm#all_files()) let candidates = [] for file in files let line_nrs = sort(bm#all_lines(file), "bm#compare_lines") for line_nr in line_nrs let bookmark = bm#get_bookmark_by_line(file, line_nr) call add(candidates, { \ 'word': printf("%s:%d | %s", file, line_nr, \ bookmark.annotation !=# '' \ ? "Annotation: " . bookmark.annotation \ : (bookmark.content !=# "" ? bookmark.content \ : "empty line") \ ), \ 'kind': 'vim_bookmarks', \ 'action__path': file, \ 'action__line': line_nr, \ 'action__bookmark': bookmark, \}) endfor endfor return copy(candidates) endfunction " }}} function! s:source.hooks.on_syntax(args, context) abort " {{{ call unite#sources#vim_bookmarks#define_highlights() highlight default link uniteSource__VimBookmarks_path BookmarkUnitePath highlight default link uniteSource__VimBookmarks_content BookmarkUniteContent execute 'syntax match uniteSource__VimBookmarks_path' \ '/[^|]\+/' \ 'contained containedin=uniteSource__VimBookmarks' execute 'syntax match uniteSource__VimBookmarks_content' \ '/|.*$/' \ 'contained containedin=uniteSource__VimBookmarks' endfunction " }}} function! unite#sources#vim_bookmarks#define() return s:source endfunction call unite#define_source(s:source) " Required for reloading " define default converter call unite#custom_source( \ 'vim_bookmarks', \ 'converters', \ 'converter_vim_bookmarks_short') let &cpo = s:save_cpo unlet s:save_cpo "vim: sts=2 sw=2 smarttab et ai textwidth=0 fdm=marker