let s:save_cpo = &cpo set cpo&vim let s:kind = { \ 'name': 'vim_bookmarks', \ 'parents': ['jump_list'], \ 'default_action': 'open', \ 'action_table': { \ 'delete': { \ 'description': 'delete the selected bookmarks', \ 'is_selectable': 1, \ 'is_quit': 0, \ }, \ 'yank': { \ 'description': 'yank path and content of the selected bookmarks', \ 'is_selectable': 1, \ }, \ 'yank_path': { \ 'description': 'yank path of the selected bookmarks', \ 'is_selectable': 1, \ }, \ 'yank_content': { \ 'description': 'yank content of the selected bookmarks', \ 'is_selectable': 1, \ }, \ 'yank_annotation': { \ 'description': 'yank annotation of the selected bookmarks', \ 'is_selectable': 1, \ }, \}} function! s:yank(text) let @" = a:text echo 'Yanked: ' . a:text if has('clipboard') call setreg(v:register, a:text) endif endfunction function! s:kind.action_table.delete.func(candidates) " {{{ for candidate in a:candidates call bm_sign#del( \ candidate.action__path, \ candidate.action__bookmark.sign_idx, \) call bm#del_bookmark_at_line( \ candidate.action__path, \ candidate.action__line, \) endfor call unite#force_redraw() endfunction " }}} function! s:kind.action_table.yank.func(candidates) " {{{ let text = join(map(copy(a:candidates), \ 'v:val.word'), "\n") call s:yank(text) endfunction " }}} function! s:kind.action_table.yank_path.func(candidates) " {{{ let text = join(map(copy(a:candidates), \ 'v:val.action__path'), "\n") call s:yank(text) endfunction " }}} function! s:kind.action_table.yank_content.func(candidates) " {{{ let text = join(map(copy(a:candidates), \ 'v:val.action__bookmark.content'), "\n") call s:yank(text) endfunction " }}} function! s:kind.action_table.yank_annotation.func(candidates) " {{{ let text = join(map(copy(a:candidates), \ 'v:val.action__bookmark.annotation'), "\n") call s:yank(text) endfunction " }}} function! unite#kinds#vim_bookmarks#define() return s:kind endfunction call unite#define_kind(s:kind) " required for reloading let &cpo = s:save_cpo unlet s:save_cpo "vim: sts=2 sw=2 smarttab et ai textwidth=0 fdm=marker