Skip to content

Commit f9a9123

Browse files
ficoosautozimu
authored andcommitted
Make LanguageClient_runSync reentrant
By changing `LanguageClient_runSync_outputs` from being source local to being function local we guarantee that if the function is called from multiple threads the function will still work. This also documents that this variable *is* function local and should not be referenced outside this function.
1 parent f228111 commit f9a9123

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

autoload/LanguageClient.vim

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -745,13 +745,13 @@ function! s:ExecuteAutocmd(event) abort
745745
endfunction
746746

747747
function! LanguageClient_runSync(fn, ...) abort
748-
let s:LanguageClient_runSync_outputs = []
749-
let l:arguments = add(a:000[:], s:LanguageClient_runSync_outputs)
748+
let l:LanguageClient_runSync_outputs = []
749+
let l:arguments = add(a:000[:], l:LanguageClient_runSync_outputs)
750750
call call(a:fn, l:arguments)
751-
while len(s:LanguageClient_runSync_outputs) == 0
751+
while len(l:LanguageClient_runSync_outputs) == 0
752752
sleep 100m
753753
endwhile
754-
let l:output = remove(s:LanguageClient_runSync_outputs, 0)
754+
let l:output = remove(l:LanguageClient_runSync_outputs, 0)
755755
return s:HandleOutput(l:output, v:true)
756756
endfunction
757757

0 commit comments

Comments
 (0)