"============================================================================= " denite.vim --- SpaceVim denite layer " Copyright (c) 2016-2023 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 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(':~') let s:lnum = expand('') + 2 function! SpaceVim#layers#denite#config() abort 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('') + 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('') + 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 h [SPC]h[SPC] let lnum = expand('') + 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('') + 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('') + 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('') + 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('') + 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('') + 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('') + 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 :call warp_denite('Denite file/rec') let lnum = expand('') + 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('') + 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(':~') let s:unite_lnum = expand('') + 3 function! s:defind_fuzzy_finder() abort nnoremap fr \ :Denite -resume let lnum = expand('') + 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 fe \ :Denite register let lnum = expand('') + 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 fh \ :Denite neoyank let lnum = expand('') + 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 fj \ :Denite jump let lnum = expand('') + 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 fl \ :Denite location_list let lnum = expand('') + 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 fm \ :Denite output:message let lnum = expand('') + 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 fq \ :Denite quickfix let lnum = expand('') + 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 fo :Denite outline let lnum = expand('') + 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 f :Denite menu:CustomKeyMaps 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 fp :Denite menu:AddedPlugins let lnum = expand('') + 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!') 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(''), '\zs\d\+\ze__SID$') endfunction let s:_s = '' . 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: