1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-01-24 05:20:04 +08:00
SpaceVim/bundle/LeaderF-neosnippet/autoload/lf_neosnippet.vim

56 lines
1.6 KiB
VimL

scriptencoding utf-8
let s:info = {
\ 'source': {},
\ 'col': 0,
\ 'ft': '',
\ 'preview_bufnr': -1,
\}
function! lf_neosnippet#source(...)
let l:snippets = neosnippet#helpers#get_completion_snippets()
let s:info.source = l:snippets
return keys(l:snippets)
endfunction
function! lf_neosnippet#accept(line, arg) abort
" from neosnippet.vim
let l:cur_text = neosnippet#util#get_cur_text()
let l:cur_keyword_str = matchstr(l:cur_text, '\S\+$')
call neosnippet#view#_expand(
\ l:cur_text . a:line[len(l:cur_keyword_str)], s:info.col, a:line)
endfunction
function! lf_neosnippet#preview(orig_buf_nr, orig_cursor, line, args) abort
let l:info = get(s:info.source, a:line, {})
let l:lines = split(get(l:info, 'snip', ''), "\n")
silent call deletebufline(s:info.preview_bufnr, 1, '$')
silent call setbufline(s:info.preview_bufnr, 1, l:lines)
" [buf_number, line_num, jump_cmd]
return [s:info.preview_bufnr, 1, '']
endfunction
function! lf_neosnippet#before_enter(args) abort
" If you do it in the preview, it slows down the cursor movement.
let l:bufnr = bufadd('lf_neosnippet_preview')
silent! call bufload(l:bufnr)
try
" from instance.py
call setbufvar(l:bufnr, '&buflisted', 0)
call setbufvar(l:bufnr, '&buftype', 'nofile')
call setbufvar(l:bufnr, '&bufhidden', 'hide')
call setbufvar(l:bufnr, '&undolevels', -1)
call setbufvar(l:bufnr, '&swapfile', 0)
call setbufvar(l:bufnr, '&filetype', &filetype)
catch /*/
" pass
endtry
let s:info.col = col('.')
let s:info.preview_bufnr = l:bufnr
endfunction