Skip to content

Commit eac41c9

Browse files
authored
Merge pull request #1439 from guns/fix-async-guru-data-race
Parse messages from guru on close_cb, not exit_cb
2 parents b71f2b7 + 17c0385 commit eac41c9

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

autoload/go/guru.vim

+11-4
Original file line numberDiff line numberDiff line change
@@ -159,31 +159,38 @@ function! s:async_guru(args) abort
159159
call add(messages, a:msg)
160160
endfunction
161161

162-
function! s:exit_cb(job, exitval) closure
163-
let out = join(messages, "\n")
162+
let status = {}
163+
let exitval = 0
164164

165+
function! s:exit_cb(job, exitval) closure
165166
let status = {
166167
\ 'desc': 'last status',
167168
\ 'type': statusline_type,
168169
\ 'state': "finished",
169170
\ }
170171

171172
if a:exitval
173+
let exitval = a:exitval
172174
let status.state = "failed"
173175
endif
174176

175177
call go#statusline#Update(status_dir, status)
178+
endfunction
179+
180+
function! s:close_cb(ch) closure
181+
let out = join(messages, "\n")
176182

177183
if has_key(a:args, 'custom_parse')
178-
call a:args.custom_parse(a:exitval, out)
184+
call a:args.custom_parse(exitval, out)
179185
else
180-
call s:parse_guru_output(a:exitval, out, a:args.mode)
186+
call s:parse_guru_output(exitval, out, a:args.mode)
181187
endif
182188
endfunction
183189

184190
let start_options = {
185191
\ 'callback': funcref("s:callback"),
186192
\ 'exit_cb': funcref("s:exit_cb"),
193+
\ 'close_cb': funcref("s:close_cb"),
187194
\ }
188195

189196
if has_key(result, 'stdin_content')

0 commit comments

Comments
 (0)