nvim-nim/autoload/suggest.vim
baabelfish 4c5dfe3ea5 WIP
2016-01-31 22:57:43 +02:00

62 lines
1.9 KiB
VimL

if exists("s:loaded")
finish
endif
let s:loaded = 1
let s:findInProject = 1
" NimSuggest
let s:NimSuggest = {}
function! s:NimSuggest.on_stdout(job, chunk)
if len(a:chunk[0]) != 0 && !(a:chunk[0] =~ "^usage")
call extend(self.lines, a:chunk)
endif
endfunction
function! s:NimSuggest.on_stderr()
endfunction
function! s:NimSuggest.on_exit()
if len(self.lines) > 0
call self.handler.run(self)
else
" Clear cli
echo ""
endif
endfunction
function! suggest#NewKnown(command, useV2, file, line, col, handler)
let result = copy(s:NimSuggest)
let result.lines = []
let result.file = a:file
let result.tempfile = result.file . ".temp"
let result.line = a:line
let result.col = a:col
let result.handler = a:handler
" if a:useTempFile
" call writefile(getline(1, '$'), result.tempfile)
" endif
" let nimcom = completion . " " . file . (a:useTempFile ? (";" . result.tempfile) : "") . ":" . line . ":" . col
let jobcmd = [g:nvim_nim_exec_nimsuggest, (a:useV2 ? '--v2' : ''), '--stdin', result.file]
let jobcmdstr = g:nvim_nim_exec_nimsuggest . " " . (a:useV2 ? '--v2' : '') . " " . '--stdin' . " " . result.file
let jobstdin = a:command . " " . result.file . ":" . result.line . ":" . result.col
if !g:nvim_nim_enable_async || !has("nvim")
let fullcmd = 'echo -e ' . shellescape(jobstdin, 1) . '|' . jobcmdstr
let result.lines = split(system(fullcmd), "\n")[4:-2]
call a:handler.run(result)
else
call util#StartQuery()
let result.job = jobstart([g:nvim_nim_exec_nimsuggest, (a:useV2 ? '--v2' : ''), '--stdin', result.file], result)
call jobsend(result.job, jobcmd)
endif
return result
endfunction
function! suggest#New(command, useV2, handler)
return suggest#NewKnown(a:command, a:useV2, expand("%:p"), line("."), col("."), a:handler)
endfunction