Fix some problems with LSP functions
This commit is contained in:
parent
a65358cfce
commit
1b53fa841b
@ -220,7 +220,7 @@ function! ale#job#SendRaw(job_id, string) abort
|
|||||||
if has('nvim')
|
if has('nvim')
|
||||||
call jobsend(a:job_id, a:string)
|
call jobsend(a:job_id, a:string)
|
||||||
else
|
else
|
||||||
call ch_sendraw(job_getchannel(s:job_map[a:job_id]), a:string)
|
call ch_sendraw(job_getchannel(s:job_map[a:job_id].job), a:string)
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
@ -160,22 +160,28 @@ function! ale#lsp#SendMessageToProgram(executable, command, message, ...) abort
|
|||||||
let [l:id, l:data] = ale#lsp#CreateMessageData(a:message)
|
let [l:id, l:data] = ale#lsp#CreateMessageData(a:message)
|
||||||
|
|
||||||
let l:matches = filter(s:connections[:], 'v:val.executable ==# a:executable')
|
let l:matches = filter(s:connections[:], 'v:val.executable ==# a:executable')
|
||||||
|
" Get the current connection or a new one.
|
||||||
if empty(l:matches)
|
let l:conn = !empty(l:matches) ? l:matches[0] : s:NewConnection()
|
||||||
" We haven't looked at this executable before.
|
|
||||||
" Create a new connection.
|
|
||||||
let l:conn = NewConnection()
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !ale#job#IsRunning(l:conn.job_id)
|
if !ale#job#IsRunning(l:conn.job_id)
|
||||||
let l:options = {'mode': 'raw', 'out_cb': 's:HandleCommandMessage'}
|
let l:options = {
|
||||||
|
\ 'mode': 'raw',
|
||||||
|
\ 'out_cb': function('s:HandleCommandMessage'),
|
||||||
|
\}
|
||||||
let l:job_id = ale#job#Start(ale#job#PrepareCommand(a:command), l:options)
|
let l:job_id = ale#job#Start(ale#job#PrepareCommand(a:command), l:options)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if l:job_id > 0
|
if l:job_id <= 0
|
||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" The ID is 0 when the message is a Notification, which is a JSON-RPC
|
||||||
|
" request for which the server must not return a response.
|
||||||
|
if l:id != 0
|
||||||
|
" Add the callback, which the server will respond to later.
|
||||||
|
let l:conn.callback_map[l:id] = a:1
|
||||||
|
endif
|
||||||
|
|
||||||
call ale#job#SendRaw(l:job_id, l:data)
|
call ale#job#SendRaw(l:job_id, l:data)
|
||||||
|
|
||||||
let l:conn.job_id = l:job_id
|
let l:conn.job_id = l:job_id
|
||||||
@ -201,18 +207,14 @@ function! ale#lsp#SendMessageToAddress(address, message, ...) abort
|
|||||||
let [l:id, l:data] = ale#lsp#CreateMessageData(a:message)
|
let [l:id, l:data] = ale#lsp#CreateMessageData(a:message)
|
||||||
|
|
||||||
let l:matches = filter(s:connections[:], 'v:val.address ==# a:address')
|
let l:matches = filter(s:connections[:], 'v:val.address ==# a:address')
|
||||||
|
" Get the current connection or a new one.
|
||||||
if empty(l:matches)
|
let l:conn = !empty(l:matches) ? l:matches[0] : s:NewConnection()
|
||||||
" We haven't looked at this address before.
|
|
||||||
" Create a new connection.
|
|
||||||
let l:conn = NewConnection()
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !has_key(l:conn, 'channel') || ch_status(l:conn.channel) !=# 'open'
|
if !has_key(l:conn, 'channel') || ch_status(l:conn.channel) !=# 'open'
|
||||||
let l:conn.channnel = ch_open(a:address, {
|
let l:conn.channnel = ch_open(a:address, {
|
||||||
\ 'mode': 'raw',
|
\ 'mode': 'raw',
|
||||||
\ 'waittime': 0,
|
\ 'waittime': 0,
|
||||||
\ 'callback': 's:HandleChannelMessage',
|
\ 'callback': function('s:HandleChannelMessage'),
|
||||||
\})
|
\})
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user