Parse messages from guru on close_cb, not exit_cb #1439
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There is a race condition in
async_guru
in which not all messages froma
guru
call are displayed:An async
guru
call is started.Lines streamed from
guru
are appended to a message list incallback()
.The
guru
process ends,exit_cb()
is called, and the list ofmessages is processed for display.
The rest of the lines from
guru
are appended to the message list.Note that
callback
may still be called afterexit_cb
, as noted in:help exit_cb
:This race was recently exposed by Vim v8.0.1073, which avoids a
redraw after statusline evaluation changes a highlight. Since vim-go
modifies the goStatusLineColor highlight definition on async calls, the
corresponding redraw acted as a delay, masking this data race.
The solution to this problem is to process
guru
output inclose_cb
,which is called after all
callback
calls are complete.