mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-14 07:18:00 +08:00
332 lines
11 KiB
VimL
332 lines
11 KiB
VimL
"=============================================================================
|
|
" denite.vim --- SpaceVim denite layer
|
|
" Copyright (c) 2016-2022 Wang Shidong & Contributors
|
|
" Author: Wang Shidong < wsdjeg@outlook.com >
|
|
" URL: https://spacevim.org
|
|
" License: GPLv3
|
|
"=============================================================================
|
|
|
|
let s:CMP = SpaceVim#api#import('vim#compatible')
|
|
|
|
function! SpaceVim#layers#denite#plugins() abort
|
|
let plugins = [
|
|
\ ['Shougo/denite.nvim',{ 'merged' : 0, 'loadconf' : 1}],
|
|
\ ['pocari/vim-denite-emoji', {'merged' : 0}],
|
|
\ ]
|
|
|
|
" neoyark source <Leader>fh
|
|
call add(plugins, ['chemzqm/unite-location', {'merged' : 0}])
|
|
call add(plugins, ['Shougo/unite-outline', {'merged' : 0}])
|
|
call add(plugins, ['ozelentok/denite-gtags', {'merged' : 0}])
|
|
call add(plugins, [g:_spacevim_root_dir . 'bundle/neoyank.vim', {'merged' : 0}])
|
|
call add(plugins, [g:_spacevim_root_dir . 'bundle/neomru.vim', {'merged' : 0}])
|
|
call add(plugins, ['SpaceVim/Denite-sources', {'merged' : 0}])
|
|
|
|
return plugins
|
|
endfunction
|
|
|
|
function! SpaceVim#layers#denite#health() abort
|
|
call SpaceVim#layers#denite#plugins()
|
|
call SpaceVim#layers#denite#config()
|
|
return 1
|
|
endfunction
|
|
|
|
let s:filename = expand('<sfile>:~')
|
|
let s:lnum = expand('<slnum>') + 2
|
|
function! SpaceVim#layers#denite#config() abort
|
|
|
|
let g:_spacevim_mappings_space.i = {'name' : '+Insertion'}
|
|
call SpaceVim#mapping#space#def('nnoremap', ['i', 'u'], 'Denite unicode', 'search-and-insert-unicode', 1)
|
|
if g:spacevim_snippet_engine ==# 'neosnippet'
|
|
call SpaceVim#mapping#space#def('nnoremap', ['i', 's'], 'Denite neosnippet', 'insert snippets', 1)
|
|
elseif g:spacevim_snippet_engine ==# 'ultisnips'
|
|
" @todo ultisnips do not support denite now.
|
|
" https://github.com/SirVer/ultisnips/issues/869
|
|
" call SpaceVim#mapping#space#def('nnoremap', ['i', 's'], 'Denite ultisnips', 'insert snippets', 1)
|
|
endif
|
|
|
|
|
|
let lnum = expand('<slnum>') + s:lnum - 1
|
|
call SpaceVim#mapping#space#def('nnoremap', ['?'], 'call call('
|
|
\ . string(s:_function('s:warp_denite')) . ', ["Denite menu:CustomKeyMaps -input=[SPC]"])',
|
|
\ ['show-mappings',
|
|
\ [
|
|
\ 'SPC ? is to show mappings',
|
|
\ '',
|
|
\ 'Definition: ' . s:filename . ':' . lnum,
|
|
\ ]
|
|
\ ],
|
|
\ 1)
|
|
|
|
let lnum = expand('<slnum>') + s:lnum - 1
|
|
call SpaceVim#mapping#space#def('nnoremap', ['h', '[SPC]'], 'call call('
|
|
\ . string(s:_function('s:warp_denite')) . ', ["Denite help -input=SpaceVim"])',
|
|
\ ['find-SpaceVim-help',
|
|
\ [
|
|
\ 'SPC h SPC is to find SpaceVim help',
|
|
\ '',
|
|
\ 'Definition: ' . s:filename . ':' . lnum,
|
|
\ ]
|
|
\ ],
|
|
\ 1)
|
|
" @fixme SPC h SPC make vim flick
|
|
nmap <Space>h<Space> [SPC]h[SPC]
|
|
|
|
let lnum = expand('<slnum>') + s:lnum - 1
|
|
call SpaceVim#mapping#space#def('nnoremap', ['b', 'b'], 'call call('
|
|
\ . string(s:_function('s:warp_denite')) . ', ["Denite buffer"])',
|
|
\ ['buffer-list',
|
|
\ [
|
|
\ 'SPC b b is to open buffer list',
|
|
\ '',
|
|
\ 'Definition: ' . s:filename . ':' . lnum,
|
|
\ ]
|
|
\ ],
|
|
\ 1)
|
|
|
|
let lnum = expand('<slnum>') + s:lnum - 1
|
|
call SpaceVim#mapping#space#def('nnoremap', ['f', 'r'], 'call call('
|
|
\ . string(s:_function('s:warp_denite')) . ', ["Denite file_mru"])',
|
|
\ ['open-recent-file',
|
|
\ [
|
|
\ 'SPC f r is to open recent file list',
|
|
\ '',
|
|
\ 'Definition: ' . s:filename . ':' . lnum,
|
|
\ ]
|
|
\ ],
|
|
\ 1)
|
|
|
|
let lnum = expand('<slnum>') + s:lnum - 1
|
|
call SpaceVim#mapping#space#def('nnoremap', ['j', 'i'], 'call call('
|
|
\ . string(s:_function('s:warp_denite')) . ', ["Denite outline"])',
|
|
\ ['jump to a definition in buffer',
|
|
\ [
|
|
\ 'SPC j i is to jump to a definition in buffer',
|
|
\ '',
|
|
\ 'Definition: ' . s:filename . ':' . lnum,
|
|
\ ]
|
|
\ ],
|
|
\ 1)
|
|
|
|
let lnum = expand('<slnum>') + s:lnum - 1
|
|
call SpaceVim#mapping#space#def('nnoremap', ['r', 'l'], 'call call('
|
|
\ . string(s:_function('s:warp_denite')) . ', ["Denite -resume"])',
|
|
\ ['resume denite buffer',
|
|
\ [
|
|
\ 'SPC r l is to resume denite buffer',
|
|
\ '',
|
|
\ 'Definition: ' . s:filename . ':' . lnum,
|
|
\ ]
|
|
\ ],
|
|
\ 1)
|
|
|
|
let lnum = expand('<slnum>') + s:lnum - 1
|
|
call SpaceVim#mapping#space#def('nnoremap', ['T', 's'], 'call call('
|
|
\ . string(s:_function('s:warp_denite')) . ', ["Denite colorscheme"])',
|
|
\ ['fuzzy find colorschemes',
|
|
\ [
|
|
\ 'SPC T s is to fuzzy find colorschemes',
|
|
\ '',
|
|
\ 'Definition: ' . s:filename . ':' . lnum,
|
|
\ ]
|
|
\ ],
|
|
\ 1)
|
|
|
|
let lnum = expand('<slnum>') + s:lnum - 1
|
|
call SpaceVim#mapping#space#def('nnoremap', ['f', 'f'], 'call call('
|
|
\ . string(s:_function('s:warp_denite')) . ', ["DeniteBufferDir file/rec"])',
|
|
\ ['Find files in the directory of the current buffer',
|
|
\ [
|
|
\ '[SPC f f] is to find files in the directory of the current buffer',
|
|
\ '',
|
|
\ 'Definition: ' . s:filename . ':' . lnum,
|
|
\ ]
|
|
\ ],
|
|
\ 1)
|
|
|
|
let lnum = expand('<slnum>') + s:lnum - 1
|
|
call SpaceVim#mapping#space#def('nnoremap', ['p', 'f'], 'call call('
|
|
\ . string(s:_function('s:warp_denite')) . ', ["Denite file/rec"])',
|
|
\ ['find files in current project',
|
|
\ [
|
|
\ '[SPC p f] is to find files in the root of the current project',
|
|
\ '',
|
|
\ 'Definition: ' . s:filename . ':' . lnum,
|
|
\ ]
|
|
\ ],
|
|
\ 1)
|
|
nnoremap <silent> <C-p> :call <SID>warp_denite('Denite file/rec')<cr>
|
|
|
|
|
|
let lnum = expand('<slnum>') + s:lnum - 1
|
|
call SpaceVim#mapping#space#def('nnoremap', ['h', 'i'], 'call call('
|
|
\ . string(s:_function('s:warp_denite')) . ', ["DeniteCursorWord help"])',
|
|
\ ['get help with the symbol at point',
|
|
\ [
|
|
\ '[SPC h i] is to get help with the symbol at point',
|
|
\ '',
|
|
\ 'Definition: ' . s:filename . ':' . lnum,
|
|
\ ]
|
|
\ ],
|
|
\ 1)
|
|
|
|
|
|
let lnum = expand('<slnum>') + s:lnum - 1
|
|
call SpaceVim#mapping#space#def('nnoremap', ['i', 'u'], 'call call('
|
|
\ . string(s:_function('s:warp_denite')) . ', ["Denite unicode"])',
|
|
\ ['search-and-insert-unicode',
|
|
\ [
|
|
\ '[SPC i u] is to search and insert Unicode charater',
|
|
\ '',
|
|
\ 'Definition: ' . s:filename . ':' . lnum,
|
|
\ ]
|
|
\ ],
|
|
\ 1)
|
|
|
|
let g:_spacevim_mappings.f = {'name' : '+Fuzzy Finder'}
|
|
call s:defind_fuzzy_finder()
|
|
endfunction
|
|
|
|
let s:file = expand('<sfile>:~')
|
|
let s:unite_lnum = expand('<slnum>') + 3
|
|
function! s:defind_fuzzy_finder() abort
|
|
nnoremap <silent> <Leader>fr
|
|
\ :<C-u>Denite -resume<CR>
|
|
let lnum = expand('<slnum>') + s:unite_lnum - 4
|
|
let g:_spacevim_mappings.f.r = ['Denite -resume',
|
|
\ 'resume unite window',
|
|
\ [
|
|
\ '[Leader f r ] is to resume unite window',
|
|
\ '',
|
|
\ 'Definition: ' . s:file . ':' . lnum,
|
|
\ ]
|
|
\ ]
|
|
nnoremap <silent> <Leader>fe
|
|
\ :<C-u>Denite register<CR>
|
|
let lnum = expand('<slnum>') + s:unite_lnum - 4
|
|
let g:_spacevim_mappings.f.e = ['Denite register',
|
|
\ 'fuzzy find registers',
|
|
\ [
|
|
\ '[Leader f r ] is to resume unite window',
|
|
\ '',
|
|
\ 'Definition: ' . s:file . ':' . lnum,
|
|
\ ]
|
|
\ ]
|
|
nnoremap <silent> <Leader>fh
|
|
\ :<C-u>Denite neoyank<CR>
|
|
let lnum = expand('<slnum>') + s:unite_lnum - 4
|
|
let g:_spacevim_mappings.f.h = ['Denite neoyank',
|
|
\ 'fuzzy find yank history',
|
|
\ [
|
|
\ '[Leader f h] is to fuzzy find history and yank content',
|
|
\ '',
|
|
\ 'Definition: ' . s:file . ':' . lnum,
|
|
\ ]
|
|
\ ]
|
|
nnoremap <silent> <Leader>fj
|
|
\ :<C-u>Denite jump<CR>
|
|
let lnum = expand('<slnum>') + s:unite_lnum - 4
|
|
let g:_spacevim_mappings.f.j = ['Denite jump',
|
|
\ 'fuzzy find jump list',
|
|
\ [
|
|
\ '[Leader f j] is to fuzzy find jump list',
|
|
\ '',
|
|
\ 'Definition: ' . s:file . ':' . lnum,
|
|
\ ]
|
|
\ ]
|
|
nnoremap <silent> <Leader>fl
|
|
\ :<C-u>Denite location_list<CR>
|
|
let lnum = expand('<slnum>') + s:unite_lnum - 4
|
|
let g:_spacevim_mappings.f.l = ['Denite location_list',
|
|
\ 'fuzzy find location list',
|
|
\ [
|
|
\ '[Leader f l] is to fuzzy find location list',
|
|
\ '',
|
|
\ 'Definition: ' . s:file . ':' . lnum,
|
|
\ ]
|
|
\ ]
|
|
nnoremap <silent> <Leader>fm
|
|
\ :<C-u>Denite output:message<CR>
|
|
let lnum = expand('<slnum>') + s:unite_lnum - 4
|
|
let g:_spacevim_mappings.f.m = ['Denite output:message',
|
|
\ 'fuzzy find message',
|
|
\ [
|
|
\ '[Leader f m] is to fuzzy find message',
|
|
\ '',
|
|
\ 'Definition: ' . s:file . ':' . lnum,
|
|
\ ]
|
|
\ ]
|
|
nnoremap <silent> <Leader>fq
|
|
\ :<C-u>Denite quickfix<CR>
|
|
let lnum = expand('<slnum>') + s:unite_lnum - 4
|
|
let g:_spacevim_mappings.f.q = ['Denite quickfix',
|
|
\ 'fuzzy find quickfix list',
|
|
\ [
|
|
\ '[Leader f q] is to fuzzy find quickfix list',
|
|
\ '',
|
|
\ 'Definition: ' . s:file . ':' . lnum,
|
|
\ ]
|
|
\ ]
|
|
nnoremap <silent> <Leader>fo :<C-u>Denite outline<CR>
|
|
let lnum = expand('<slnum>') + s:unite_lnum - 4
|
|
let g:_spacevim_mappings.f.o = ['Denite outline',
|
|
\ 'fuzzy find outline',
|
|
\ [
|
|
\ '[Leader f o] is to fuzzy find outline',
|
|
\ '',
|
|
\ 'Definition: ' . s:file . ':' . lnum,
|
|
\ ]
|
|
\ ]
|
|
nnoremap <silent> <Leader>f<Space> :Denite menu:CustomKeyMaps<CR>
|
|
let g:_spacevim_mappings.f['[SPC]'] = ['Denite menu:CustomKeyMaps',
|
|
\ 'fuzzy find custom key bindings',
|
|
\ [
|
|
\ '[Leader f SPC] is to fuzzy find custom key bindings',
|
|
\ '',
|
|
\ 'Definition: ' . s:file . ':' . lnum,
|
|
\ ]
|
|
\ ]
|
|
nnoremap <silent> <Leader>fp :<C-u>Denite menu:AddedPlugins<CR>
|
|
let lnum = expand('<slnum>') + s:unite_lnum - 4
|
|
let g:_spacevim_mappings.f.p = ['Denite menu:AddedPlugins',
|
|
\ 'fuzzy find vim packages',
|
|
\ [
|
|
\ '[Leader f p] is to fuzzy find vim packages installed in SpaceVim',
|
|
\ '',
|
|
\ 'Definition: ' . s:file . ':' . lnum,
|
|
\ ]
|
|
\ ]
|
|
endfunction
|
|
|
|
function! s:warp_denite(cmd) abort
|
|
exe a:cmd
|
|
doautocmd WinEnter
|
|
endfunction
|
|
|
|
function! SpaceVim#layers#denite#loadable()
|
|
if s:CMP.has('python3')
|
|
return 1
|
|
else
|
|
call SpaceVim#logger#warn('denite layer requires +python3 enabled!', 0)
|
|
if has('nvim')
|
|
call SpaceVim#logger#info(' use `pip3 install pynvim` to enabled +python3 for neovim.')
|
|
endif
|
|
endif
|
|
endfunction
|
|
|
|
" function() wrapper
|
|
if v:version > 703 || v:version == 703 && has('patch1170')
|
|
function! s:_function(fstr) abort
|
|
return function(a:fstr)
|
|
endfunction
|
|
else
|
|
function! s:_SID() abort
|
|
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze__SID$')
|
|
endfunction
|
|
let s:_s = '<SNR>' . s:_SID() . '_'
|
|
function! s:_function(fstr) abort
|
|
return function(substitute(a:fstr, 's:', s:_s, 'g'))
|
|
endfunction
|
|
endif
|
|
" vim:set et sw=2 cc=80:
|