34 lines
1.3 KiB
VimL
34 lines
1.3 KiB
VimL
" This callback will be executed when the entire command is completed
|
|
function! BackgroundCommandClose(channel)
|
|
" Read the output from the command into the quickfix window
|
|
unlet g:backgroundCommandOutput
|
|
endfunction
|
|
|
|
function! RunBackgroundCommand(command)
|
|
" Make sure we're running VIM version 8 or higher.
|
|
if v:version < 800
|
|
echoerr 'RunBackgroundCommand requires VIM version 8 or higher'
|
|
return
|
|
endif
|
|
if exists('g:backgroundCommandOutput')
|
|
echo 'Already running task in background'
|
|
else
|
|
echo 'Running task in background'
|
|
" Launch the job.
|
|
" Notice that we're only capturing out, and not err here. This is because, for some reason, the callback
|
|
" will not actually get hit if we write err out to the same file. Not sure if I'm doing this wrong or?
|
|
let g:backgroundCommandOutput = tempname()
|
|
call job_start(a:command, {'close_cb': 'BackgroundCommandClose', 'out_io': 'file', 'out_name': g:backgroundCommandOutput})
|
|
endif
|
|
endfunction
|
|
|
|
" So we can use :BackgroundCommand to call our function.
|
|
command! -nargs=+ -complete=shellcmd RunBackgroundCommand call RunBackgroundCommand(<q-args>)
|
|
|
|
function! GetCWD()
|
|
let l:cwd = system('pwd | rev |cut -d- -f1 | rev | xargs | sed "s/[[:space:]]/\\\\&/g\"')
|
|
echo l:cwd
|
|
call setline('.', l:cwd)
|
|
unlet l:cwd
|
|
endfunction
|