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