Skip to content

Commit dab664f

Browse files
author
Junfeng Li
committed
Fix output handling in vim.
Close #282.
1 parent b4033ed commit dab664f

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

plugin/LanguageClient.vim

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,37 +19,37 @@ endfunction
1919
let s:id = 1
2020
let s:handlers = {}
2121

22+
" Note: vim execute callback for every line.
23+
let s:content_length = 0
24+
let s:input = ''
2225
function! s:HandleMessage(job, lines, event) abort
2326
if a:event ==# 'stdout'
24-
let l:content_length = 0
25-
let l:input = ''
26-
2727
while len(a:lines) > 0
2828
let l:line = remove(a:lines, 0)
2929

3030
if l:line ==# ''
3131
continue
32-
elseif l:content_length == 0
33-
let l:content_length = str2nr(substitute(l:line, '.*Content-Length:', '', ''))
32+
elseif s:content_length == 0
33+
let s:content_length = str2nr(substitute(l:line, '.*Content-Length:', '', ''))
3434
continue
3535
endif
3636

37-
let l:input .= strpart(l:line, 0, l:content_length)
38-
if l:content_length < strlen(l:line)
39-
call insert(a:lines, strpart(l:line, l:content_length), 0)
40-
let l:content_length = 0
37+
let s:input .= strpart(l:line, 0, s:content_length)
38+
if s:content_length < strlen(l:line)
39+
call insert(a:lines, strpart(l:line, s:content_length), 0)
40+
let s:content_length = 0
4141
else
42-
let l:content_length = l:content_length - strlen(l:line)
42+
let s:content_length = s:content_length - strlen(l:line)
4343
endif
44-
if l:content_length > 0
44+
if s:content_length > 0
4545
continue
4646
endif
4747

4848
try
49-
let l:message = json_decode(l:input)
50-
let l:input = ''
49+
let l:message = json_decode(s:input)
50+
let s:input = ''
5151
catch
52-
let l:input = ''
52+
let s:input = ''
5353
call s:Debug(string(v:exception))
5454
continue
5555
endtry

0 commit comments

Comments
 (0)