#2009 - Force Windows jobs to run in a CMD shell

This commit is contained in:
w0rp 2019-02-08 21:33:07 +00:00
parent ba6f08f3d4
commit 422908a572
No known key found for this signature in database
GPG key ID: 0FC1ECAA8C81CD83
3 changed files with 26 additions and 1 deletions

View file

@ -293,6 +293,8 @@ function! ale#command#Run(buffer, command, Callback, options) abort
let s:fake_job_id = get(s:, 'fake_job_id', 0) + 1
let l:job_id = s:fake_job_id
endif
elseif has('win32')
let l:job_id = ale#job#StartWithCmd(l:command, l:job_options)
else
let l:job_id = ale#job#Start(l:command, l:job_options)
endif

View file

@ -276,6 +276,24 @@ function! ale#job#Start(command, options) abort
return l:job_id
endfunction
" Force running commands in a Windows CMD command line.
" This means the same command syntax works everywhere.
function! ale#job#StartWithCmd(command, options) abort
let l:shell = &l:shell
let l:shellcmdflag = &l:shellcmdflag
let &l:shell = 'cmd'
let &l:shellcmdflag = '/c'
try
let l:job_id = ale#job#Start(a:command, a:options)
finally
let &l:shell = l:shell
let &l:shellcmdflag = l:shellcmdflag
endtry
return l:job_id
endfunction
" Send raw data to the job.
function! ale#job#SendRaw(job_id, string) abort
if has('nvim')

View file

@ -331,7 +331,12 @@ function! ale#lsp#StartProgram(conn_id, executable, command) abort
\ 'mode': 'raw',
\ 'out_cb': {_, message -> ale#lsp#HandleMessage(a:conn_id, message)},
\}
let l:job_id = ale#job#Start(a:command, l:options)
if has('win32')
let l:job_id = ale#job#StartWithCmd(a:command, l:options)
else
let l:job_id = ale#job#Start(a:command, l:options)
endif
else
let l:job_id = l:conn.job_id
endif