mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-01-24 05:40:05 +08:00
51 lines
1.2 KiB
VimL
51 lines
1.2 KiB
VimL
let s:save_cpo = &cpo
|
|
set cpo&vim
|
|
|
|
let s:unite_source = {
|
|
\ 'name': 'manpage',
|
|
\ 'hooks': {},
|
|
\ 'action_table': {'*': {}},
|
|
\ }
|
|
|
|
let s:unite_source.action_table['*'].preview = {
|
|
\ 'description' : 'open this manpage',
|
|
\ 'is_quit' : 0,
|
|
\ }
|
|
|
|
function! s:unite_source.action_table['*'].preview.func(candidate)
|
|
execute a:candidate.action__command
|
|
endfunction
|
|
|
|
function! s:manpage(x)
|
|
return printf("%s %s", "SuperMan", a:x)
|
|
endfunction
|
|
|
|
function! s:unite_source.gather_candidates(args, context)
|
|
|
|
let l:manpages = system("apropos . | awk \'{print $1}\'")
|
|
|
|
let manpageslist = unite#util#sort_by(unite#util#uniq_by(
|
|
\ map(split(l:manpages, '\n'),
|
|
\'[fnamemodify(v:val, ":t:r"), fnamemodify(v:val, ":p")]'), 'v:val[0]'),
|
|
\'v:val[0]')
|
|
|
|
return map(manpageslist, '{
|
|
\ "word": v:val[0],
|
|
\ "source": "manpage",
|
|
\ "kind": ["file", "command"],
|
|
\ "action__command": s:manpage(v:val[0]),
|
|
\ "action__type": ": ",
|
|
\ "action__path": v:val[1],
|
|
\ "action__directory": fnamemodify(v:val[1], ":h"),
|
|
\ }')
|
|
endfunction
|
|
|
|
function! unite#sources#manpage#define()
|
|
return s:unite_source
|
|
endfunction
|
|
|
|
"unlet s:unite_source
|
|
|
|
let &cpo = s:save_cpo
|
|
unlet s:save_cpo
|